我想在特定目录中打开终结者,例如/home/downloads/
,然后运行命令。
我通过这个“自定义命令”完成了第一部分:cd /home/downloads; bash
终结者现在在此目录中启动,但我如何才能完成第二部分?
现在终结者已在下载目录中启动,我想运行任何我想要的命令,例如ls
orrake
命令或使用一些别名作为命令。我怎样才能做到这一点?
我在终止符中按鼠标右键,然后选择“参数”,然后选择“布局”,然后在“自定义命令”部分中添加文本。
所有这些都必须在终结器启动后自动执行。
答案1
cd /home/downloads; exec bash
作为自定义命令运行。 (exec
内置函数确保它将bash
成为终端仿真器的子代;没有它,它最终可能会成为孙子。)您可以terminator -e 'cd /home/downloads; exec bash'
在命令行上运行。
您不能在自定义命令中使用别名,因为别名是由 定义的~/.bashrc
,但该文件仅由交互式 shell 加载,而不是由用作终端仿真器和脚本 shell 之间粘合剂的脚本 shell 加载。如果要使用别名,则需要显式加载它们。如果你把它们放在一个单独的文件中,那就是这样的
. ~/.bash_aliases; cd /home/downloads; exec bash
或者在命令行上
terminator -x bash -c '. ~/.bash_aliases; cd /home/downloads; exec bash'
如果您的别名位于 中~/.bashrc
,则使用. ~/.bashrc
,但请注意,您的别名中可能有一些内容.bashrc
会导致错误,因为 shell 不是交互式的。如果发生这种情况,最简单的解决方案是将别名(以及函数以及您想要在粘合代码中使用的任何其他设置)拆分为一个单独的文件,并用于.
包含来自.bashrc
.
答案2
我有同样的问题使用终结者激活虚拟环境。
诀窍是只需“一个”命令即可完成所有操作:bash
。利用它的-i
选项(交互式)并使用自定义--rcfile
,其中PROMPT_COMMAND
设置为我们想要执行的任何内容。结果会是这样的:
command = "bash --rcfile <(cat ${HOME}/.bashrc; echo 'export PROMPT_COMMAND="your commands; go here; unset PROMPT_COMMAND"') -i"
只需替换your commands; go here;
为您的实际命令即可。请参阅此答案以获取解释。
答案3
只需按照添加第一个命令的方式添加其他命令即可。例如,运行ls
:
cd /home/downloads; ls; bash
您可以将其添加到您的个人资料的“命令”选项中:
您没有得到的原因rake
是它不在默认路径中。要使用它,您需要指定路径。因此,首先在终端中运行以下命令:
type rake
那会返回类似的东西/foo/bin/rake
。那是你需要的路径。将其添加到上面的自定义命令中:
cd /home/downloads; /foo/bin/rake; bash
这对于别名不起作用。别名由您的 shell 设置,此处不可用。解决方法是使用脚本。因此,如果您有这样的别名:
alias foo="command1 argument2"
制作一个脚本,调用它foo.sh
并将其保存在 中/home/youruser/bin
,内容如下:
#!/usr/bin/env bash
command1 argument2
并使其可执行:
chmod a+x /home/username/bin/foo.sh
然后,在“自定义命令”部分中,使用:
cd /home/downloads; /home/username/bin/foo.sh; bash
答案4
如果右键单击打开的终结者窗口,则可以选择“首选项”。选择“配置文件”,然后选择“命令”选项卡。有一个标题为“运行自定义命令而不是我的 shell”的复选框。
我相信这就是您正在寻找的。