6

使用Terminator,用户可以在配置文件中定义布局。通过这些布局,用户可以设置要在启动时执行的命令。因此,例如,可以创建一个布局,其中终端自动执行ls如下(注意bash命令以避免终端关闭):

command = "ls; bash"

现在,我怎样才能让 Terminator 加载 Python 虚拟环境呢?当然,在加载环境的情况下保持 bash 控制台处于活动状态。

笔记

琐碎的方法:

command = "workon my_env; bash"

或其source my_env/bin/activate等价物(不使用virtualenvwrapper),将不起作用。

4

1 回答 1

10

诀窍是只用“一个”命令来做所有事情:bash. 利用其-i选项(交互式)并使用设置为我们想要执行的任何内容--rcfile的自定义。PROMPT_COMMAND结果将是这样的:

command = "bash --rcfile <(cat ${HOME}/.bashrc; echo 'export PROMPT_COMMAND="workon my_env; unset PROMPT_COMMAND"') -i"

解释

  • 我们bash以交互 ( -i) 模式执行。
  • 我们从自定义命令文件 ( --rcfile) 而不是.bashrc.
  • 这个文件是用.bashrc另外一个命令的内容创建的。
  • 这个额外的命令PROMPT_COMMAND以“我们想要执行的任何内容”的值导出。在这种情况下:workon my_env
  • 在第PROMPT_COMMAND一次执行后立即取消设置,以避免在每次与 shell 交互后多次执行。

只需编辑零件即可轻松扩展自定义命令workon my_env。因此,例如,如果您想ls从加载虚拟环境中自动执行 appart,您将workon my_env; ls改为编写。

于 2015-07-20T19:33:16.993 回答