在必要的目录中运行terminator,然后运行必要的命令

在必要的目录中运行terminator,然后运行必要的命令

我想在特定目录中打开终结者,例如/home/downloads/,然后运行命令。

我通过这个“自定义命令”完成了第一部分:cd /home/downloads; bash 终结者现在在此目录中启动,但我如何才能完成第二部分?

现在终结者已在下载目录中启动,我想运行任何我想要的命令,例如lsorrake命令或使用一些别名作为命令。我怎样才能做到这一点?

我在终止符中按鼠标右键,然后选择“参数”,然后选择“布局”,然后在“自定义命令”部分中添加文本。

所有这些都必须在终结器启动后自动执行。

答案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”的复选框。

我相信这就是您正在寻找的。

相关内容