我正在尝试gnome-terminal
从 shell 脚本在新窗口中启动一个命令,但似乎.bashrc
在调用 gnome-terminal 并执行命令时我的文件没有被获取:
gnome-terminal -t "my title" -e vim
但单独启动时确实如此gnome-terminal
:
gnome-terminal -t "my title"
(出于测试目的,只需echo "something"
在末尾添加一个.bashrc
)
我也尝试过.bashrc
在运行之前明确寻找来源vim
,但没有成功:
gnome-terminal -t "my title" -x $SHELL -c "source $HOME/.bashrc; vim"
我是否遗漏了什么?
答案1
不,你是对的。gnome-terminal 在通过 -e 参数运行命令时不会获取 .bashrc。
Bash 和 gnome-terminal 是两个不同的东西。当您不使用 -e 运行时,gnome-terminal 会运行您的默认 shell(恰好是 bash)。当您使用 -e 运行时,gnome-terminal 会运行您提供的命令(未加载 bash,因此不会获取 .bashrc)。
您的最后一个例子也不起作用。$HOME 是 bash 中的一个变量,不可用。此外,source 是一个 bash 命令,而 vim 可能需要一个路径。
我认为,实现此目的的最佳方法是制作包装脚本。
在您的路径中的某个地方(我将 ~/.bin/ 添加到我的路径中)创建一个名为 vim-x 的文件并将其设置为可执行文件。
#!/bin/bash
源 $HOME/.bashrc
vim "$@"
然后你可以运行:
gnome-terminal -t "my title" -e /home/user/.bin/vim-x