Asq*_*Asq 12 bash terminal gnome-terminator
我想在特定目录中打开终结者,例如/home/downloads/
,然后运行命令。
我通过这个“自定义命令”做了第一部分:cd /home/downloads; bash
终结者现在在这个目录中启动,但是我怎么做第二部分?
现在终止符已在下载目录中启动,我想运行我想要的任何命令,例如ls
或rake
command 或使用一些别名作为命令。我怎样才能做到这一点?
我在终结符中按鼠标右键并选择参数,然后选择布局,然后在自定义命令部分添加文本。
所有这些都必须在终结器启动后自动进行。
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
.
我在使用 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;
为您的实际命令即可。请参阅此答案以获取解释。