Если вы работаете на Mac и удивляетесь, почему /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
при запуске tmux все время добавляется к PATH, это из-за утилиты path_helper, которая запускается из вашего /etc/profile
файла.
Вы не можете легко убедить tmux (точнее, bash) не исходить /etc/profile
(по какой-то причине tmux всегда запускается как оболочка входа в систему, что означает, что / etc / profile будет читаться), но вы можете убедиться, что эффекты path_helper don винт с вашей PATH.
Хитрость заключается в том, чтобы убедиться, что PATH пуст перед запуском path_helper. В моем ~/.bash_profile
файле у меня есть это:
if [ -f /etc/profile ]; then
PATH=""
source /etc/profile
fi
Очистка PATH перед выполнением path_helper предотвратит добавление значения PATH по умолчанию к выбранному (ранее) выбранному PATH и позволит остальным вашим сценариям настройки bash (командам, расположенным ниже .bash_profile
или в том .bashrc
случае, если вы их получили .bash_profile
) настроить свои ПУТЬ соответственно.
Надеюсь, что это имеет смысл ...
if [ -n "$TMUX" ]
пунктом, но мне было интересно - насколько это важно на[ -f /etc/profile ]
самом деле? Разве не безопасно предположить, что/etc/profile
это всегда обычный файл?-f
на-e
, но я бы лично не пытался найти файл из сценария, который запускается при входе в систему, если я не проверил его там. Тем не менее, я склонен повторно использовать мой bash-скрипт на многих разных машинах (и в операционных системах), поэтому я хочу убедиться, что они пуленепробиваемые. Я могу представить, что некоторые другие варианты Unix могут назвать это как-то иначе.~/.bash_profile
вернуло здравомыслие в мой счастливый мир Tmux.set -g default-command "${SHELL}"
в.tmux.conf
силах tmux использовать не для входа снарядов. В любом случае, я не вижу в этом смысла, поскольку вы обычно открываете tmux после того, как уже вошли в систему.Нет; сортировка
$PATH
была бы слишком сумасшедшей вещью, поскольку многие системы зависят от ее пользовательского порядка.Тем не менее, tmux запускает вашу оболочку в режиме «входа в систему», что приводит
~/.profile
к повторному получению . Это означает, что если у вас есть что-то вродеPATH=/my/dir:/another/dir:$PATH
этого файла, это будет сделано снова , в результате чего будет содержаться $ PATH/my/dir:/another/dir:/my/dir:/another/dir:(etc.)
. Чтобы избежать этого, вы можете использовать другую переменную для проверки:источник
@ Грэхэм Эштон Спасибо за вашу идею
Мое предложение было бы, что вы положили
в вашем файле .zshrc вверху.
УБЕДИТЕСЬ, что ваш
ниже.
источник