使用Terminator,用户可以在配置文件中定义布局。通过这些布局,用户可以设置在启动时执行的命令。因此,例如,可以创建这样一个布局,其中终端自动执行ls
(注意bash
命令以避免终端关闭):
command = "ls; bash"
现在,我如何使终结者加载一个Python虚拟环境代替?当然,在环境加载时保持bash控制台活动。
注意
小方法:
command = "workon my_env; bash"
或它的source my_env/bin/activate
等效(不使用virtualenvwrapper
)不能工作
诀窍是只使用"一个"命令:bash
。利用它的-i
选项(交互式)并使用自定义--rcfile
,其中PROMPT_COMMAND
被设置为我们想要执行的任何内容。结果如下所示:
command = "bash --rcfile <(cat ${HOME}/.bashrc; echo 'export PROMPT_COMMAND="workon my_env; unset PROMPT_COMMAND"') -i"
- 以交互(
-i
)模式执行bash
。 - 我们从自定义命令文件(
--rcfile
)而不是.bashrc
执行命令。 - 这个文件是用
.bashrc
的内容加上一个命令创建的。 - 这个额外的命令导出
PROMPT_COMMAND
的值为"我们想要执行的"。本例中:workon my_env
. -
PROMPT_COMMAND
在第一次执行后被取消,以避免每次与shell交互后多次执行。
-i
)模式执行bash
。--rcfile
)而不是.bashrc
执行命令。.bashrc
的内容加上一个命令创建的。PROMPT_COMMAND
的值为"我们想要执行的"。本例中:workon my_env
.PROMPT_COMMAND
在第一次执行后被取消,以避免每次与shell交互后多次执行。可以很容易地扩展自定义命令,只需编辑部分workon my_env
。因此,例如,如果您想在加载虚拟环境之后自动执行ls
,那么您应该编写workon my_env; ls
。