当我使用 -e 运行 gnome-terminal 来执行命令时,用于查找命令的 PATH 不是启动该命令的终端中使用的 PATH
例如:
我打开一个终端并将 PATH 设置为“./:$PATH
输入gnome-terminal -e cluster_node
找不到集群节点。如果我type gnome-terminal -e ./cluster_node
能
如果我在 /etc/environment 中添加 PATH ./,那么它总是有效/
我认为它没有使用启动它的终端环境 PATH。
答案1
对于新变量,可以将其导出,如:
> export NEWVAR=something
但是,在本例中,PATH 变量由 shell 的初始化脚本(/etc/profile、~/.bashrc 等)设置。父 shell 中对 PATH 的更改会被子 shell 中的初始化脚本忽略。您有以下选项:
- 确保您尝试运行的任何内容都位于众所周知的位置(/usr/local/bin 等)
- 确保在运行 gnome-terminal 时指定完整路径
- 在执行过程中重置变量:
gnome-terminal -x bash -c'导出 PATH=$PATH:/.; whatever.sh'