Когда 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
.