Коли tmux запускається або відкриває нове вікно, він не завантажує мою .profileабо .bashrc. Я в кінці . ~/.bashrcкожного разу набираю текст . Чи є спосіб зробити це автоматично?
Відповіді:
Так, наприкінці вашого .bash_profile, поставте рядок:
. ~/.bashrc
Це автоматично створює файл rc за тих обставин, коли він зазвичай обробляє лише профіль.
Правила bashзапуску певних файлів складні і залежать від типу запущеної оболонки (вхід / невхід, інтерактивний чи ні тощо), а також аргументи командного рядка та змінні середовища.
Ви можете побачити їх у man bashвихідних даних, просто шукайте INVOCATION- можливо, вам знадобиться трохи часу, щоб переварити та декодувати це :-)
.bashrc/.profile is not loaded on new tmux session (or window) — why?
Запуск bash явно працював для мене, додавши цей рядок до мого файлу ~ / .tmux.conf:
set-option -g default-command "exec /bin/bash"
~/.tmux.conf : set -g default-command "/bin/bash". Дякую, друже.
Колишні відповіді дали рішення, але не пояснили причину. Ось.
Це пов’язано з файлами ініціалізації Bash. За замовчуванням ~/.bashrcвикористовується в інтерактивній оболонці без входу . Це не буде отримано в оболонці входу. Tmux використовує оболонку входу за замовчуванням. Отже, оболонки, запущені tmux skip ~/.bashrc.
default-commandкомандна оболонкаТиповим значенням є порожній рядок, який вказує tmux створити оболонку входу, використовуючи значення
default-shellпараметра.
Файли ініціювання для Bash,
/etc/profile~/.bash_profile, ~/.bash_login, ~/.profile(Тільки перший, який існує)/etc/bash.bashrc (деякі Linux; не на Mac OS X)~/.bashrc$BASH_ENVДивна інтерактивна вимога щодо завантаження, що не стосується входу, бентежить людей і в інших ситуаціях. Кращим рішенням є зміна вимоги завантаження в ~/.bashrcякості тільки в інтерактивному режимі , що це саме те , що деякі дистрибутиви, такі як Ubuntu, роблять.
# write content below into ~/.profile, or ~/.bash_profile
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
Це має бути рішення, яке ви бажаєте. І я рекомендую кожному користувачеві Bash налаштувати це у профілі.
Список літератури
man tmuxЗ цієї теми:
здається використання .bash_profileбуде працювати.
$echo case $- in *i*) . ~/.bashrc;; esac >> .bash_profile
Рішення, яке працювало для мене, є наступним:
.bash_profileфайл, якщо у вас його немає~.bash_profileставлять source ~/.bashrcабоsource ~/.profileТепер проблему слід вирішити.
У мене була та сама проблема, і рішення досі не працювали для мене. Рішення, яке в підсумку працювало для мене, можна знайти тут .
Коротше кажучи, у tmuxвікнах / сеансах використовується оболонка входу, яка шукає ~/.profileсеред інших файлів під час запуску.
Я хотів, щоб zsh починався з кожного нового tmuxвікна, тому я розміщував exec zshйого внизу ~/.profile.