Почему `that make` запускает другую версию make вместо` make` только внутри TMUX? - PullRequest
0 голосов
/ 20 мая 2019

У меня очень странная проблема, которая возникает только внутри 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 в обоих случаях.

...