我有一个可重现的问题:
tmux
,tmux attach
或任何变体如何阻止这个?怎么解释呢?
小智 42
如果您使用的是 Mac 并且一直想知道为什么/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
在运行 tmux 时总是预先添加到 PATH,那是因为从您的/etc/profile
文件运行了一个名为 path_helper 的实用程序。
您不能轻易说服 tmux(或者更确切地说,bash)不使用源/etc/profile
(出于某种原因,tmux 总是作为登录 shell 运行,这意味着 /etc/profile 将被读取),但是您可以确保 path_helper 的效果不不要搞砸你的路径。
诀窍是在 path_helper 运行之前确保 PATH 为空。在我的~/.bash_profile
文件中,我有这个:
if [ -f /etc/profile ]; then
PATH=""
source /etc/profile
fi
Run Code Online (Sandbox Code Playgroud)
在 path_helper 执行之前清除 PATH 将阻止它将默认 PATH 预先添加到您(以前)选择的 PATH,并允许您的其余个人 bash 设置脚本(命令进一步向下.bash_profile
,或者.bashrc
如果您从 中获取它.bash_profile
)来设置您的PATH 相应。
希望这是有道理的...
不; 排序$PATH
将是一件太疯狂的事情,因为许多系统依赖于其用户设置的顺序。
但是,tmux确实在“登录”模式下启动您的 shell,从而导致再次~/.profile
采购。这意味着如果你在那个文件中有类似的东西,它会再次完成,导致 $PATH 包含. 为避免这种情况,您可以使用另一个变量来检查:PATH=/my/dir:/another/dir:$PATH
/my/dir:/another/dir:/my/dir:/another/dir:(etc.)
if [ "$_SKIP_PROFILE" ]; then
return 0
else
export _SKIP_PROFILE=y
fi
export PATH="/my/dir:/another/dir:$PATH"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5461 次 |
最近记录: |