У меня очень странная проблема, которая возникает только внутри tmux.На моем MacBook, у меня есть 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
ed 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
в домашнем пивоваренном погребе.Установка homebrew поставляется с символьной ссылкой /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?
Обновление: Как указано здесь , tmux запускаетоболочка входа в систему, приводящая к выполнению path_helper
, которая путается с PATH
.Добавление
if [ -f /etc/profile ]; then
PATH=""
source /etc/profile
fi
к ~/.profile
устраняет проблему, хотя я не понимаю, почему, поскольку /usr/local/opt/make/libexec/gnubin
был во главе PATH
в обоих случаях.