Коли 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
.