在必要的目录中运行终止符,然后运行必要的命令

Asq*_*Asq 12 bash terminal gnome-terminator

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

我通过这个“自定义命令”做了第一部分:cd /home/downloads; bash 终结者现在在这个目录中启动,但是我怎么做第二部分?

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

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

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

Gil*_*il' 6

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
Run Code Online (Sandbox Code Playgroud)

或在命令行上

terminator -x bash -c '. ~/.bash_aliases; cd /home/downloads; exec bash'
Run Code Online (Sandbox Code Playgroud)

如果您的别名在 中~/.bashrc,则使用. ~/.bashrc,但请注意您中的.bashrc某些内容可能会导致错误,因为 shell 不是交互式的。如果发生这种情况,最简单的解决方案是将您的别名(以及您想在胶水代码中使用的函数和任何其他设置)拆分为一个单独的文件,并用于.包含来自.bashrc.


Peq*_*que 6

我在使用 Terminator 激活虚拟环境时遇到了同样的问题。

诀窍是只需“一个”命令即可完成所有操作:bash。利用它的-i选项(交互式)并使用自定义,--rcfile其中PROMPT_COMMAND设置为我们想要执行的任何内容。结果会是这样的:

command = "bash --rcfile <(cat ${HOME}/.bashrc; echo 'export PROMPT_COMMAND="your commands; go here; unset PROMPT_COMMAND"') -i"
Run Code Online (Sandbox Code Playgroud)

只需替换your commands; go here;为您的实际命令即可。请参阅此答案以获取解释


小智 1

如果右键单击打开的终结者窗口,则可以选择“首选项”。选择“配置文件”,然后选择“命令”选项卡。有一个标题为“运行自定义命令而不是我的 shell”的复选框。

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