У мене є відтворювана проблема:
- налаштувати мій PATH в Bash .profile
- почати з tmux
tmux
,tmux attach
або будь-який варіант - echo $ PATH і бачити його з тими ж компонентами, але в іншому порядку
Як це зупинити? Що це пояснює?
У мене є відтворювана проблема:
tmux
, tmux attach
або будь-який варіантЯк це зупинити? Що це пояснює?
Відповіді:
Якщо ви перебуваєте на 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_helper. У моєму ~/.bash_profile
файлі є таке:
if [ -f /etc/profile ]; then
PATH=""
source /etc/profile
fi
Очищення PATH перед виконанням path_helper не дозволить йому попередньо встановити PATH за замовчуванням на ваш (раніше) обраний PATH, а також дозволить решті ваших особистих сценаріїв налаштування bash (команди далі вниз .bash_profile
, або в тому .bashrc
випадку, якщо ви їх отримали .bash_profile
) налаштувати ваш PATH відповідно.
Сподіваюся, що це має сенс ...
-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.)
. Щоб уникнути цього, ви можете використовувати іншу змінну для перевірки:
if [ "$_SKIP_PROFILE" ]; then
return 0
else
export _SKIP_PROFILE=y
fi
export PATH="/my/dir:/another/dir:$PATH"
if [ -n "$TMUX" ]
статтею, але мені було цікаво - наскільки[ -f /etc/profile ]
насправді це важливо ? Чи не безпечно припустити, що/etc/profile
це завжди звичайний файл?