我有一个很奇怪的问题,只发生在tmux内部。
在MacBook上,我在{p> 1处安装了库存make
$> /usr/bin/make --version
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for i386-apple-darwin11.3.0
使用自制软件,我还brew install
编辑了make
,现在在自己的路径中有gmake
。
$> /usr/local/bin/gmake --version
GNU Make 4.2.1
Built for x86_64-apple-darwin18.2.0
Copyright (C) 1988-2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
以上路径是自制酒窖中gmake
的符号链接。
自制安装程序附带一个/usr/local/opt/make/libexec/gnubin/make
符号链接,该符号链接指向相同的二进制文件。
运行which make
时,我期望得到的是/usr/bin/make
,因为这是我键入make
时执行的结果。但是:
$> which make
/usr/local/opt/make/libexec/gnubin/make
是前面提到的地窖符号链接。
所以我的问题是:为什么make --version
打印的内容与
`which make` --version
为什么只在tmux
内发生而不是在普通的bash shell中发生?
更新:如here所述,tmux运行一个登录shell,导致执行path_helper
,该混乱与PATH
交织在一起。添加
if [ -f /etc/profile ]; then
PATH=""
source /etc/profile
fi
对~/.profile
的解决了该问题,尽管我不明白为什么在这两种情况下/usr/local/opt/make/libexec/gnubin
都位于PATH
的首位。