Как получить экран GNU для чтения изменений .bash_profile/.bash_rc?
После внесения изменений в .bash_rc
или .bash_profile
, когда я запускаю экран GNU, он не распознает эти изменения.
Я могу
source ~/.bash_profile
и он работает для текущего окна экрана, который у меня открыт, но я должен сделать это для каждого окна экрана, которое у меня открыто.
Как мне получить экран для просмотра моих последних изменений в моей конфигурации bash?
Ответы
Ответ 1
Вы должны сделать это на каждом экране, который у вас открыт, так как все они разные. Если вам нужно изменение каждый раз, когда открывается новая оболочка, я предлагаю вам вместо этого внести изменения в ~/.bashrc.
По-видимому, вы можете сразу отправить команду ко всем окнам с помощью этого синтаксиса:
C-a :
at "#" stuff "source ~/.bash_profile^M"
Ответ 2
Если вы хотите, чтобы экран всегда обрабатывал вашу оболочку как оболочку входа и выставлял те же файлы, которые были бы прочитаны, если бы просто начал новую оболочку, добавьте следующее в ~/.screenrc
(или, возможно, ~/.byobu/.screenrc
, как указано в комментарии):
shell -$SHELL
Таким образом, вам не нужно вручную указывать исходные файлы каждый раз при запуске нового экрана. Хотя вам нужно было бы, если бы вы только что внесли изменения и хотели, чтобы эти изменения отражались на вашем текущем экране.
Документацию для этого (и множество других деталей экрана) можно найти здесь. В принципе, shell
- это команда на экран, показывающая, что она запускает следующее, когда ему нужно создать новую оболочку. $SHELL
- это обычная переменная, содержащая путь к вашей предпочитаемой оболочке. И тире -
перед $SHELL
указывает, что он должен быть запущен как оболочка входа (что обычно означает, что оно отправляет ваши ~/.bash_profile
и т.д.).
Однако стоит отметить, что по умолчанию экран по умолчанию просто наследует большинство переменных среды из оболочки, где вы запускаете экран; и под-оболочка входа может неожиданно изменить некоторые переменные среды. Я столкнулся с ситуацией, когда элементы моего $PATH были в основном переписаны. Я решил проблему благодаря этому особо отличному ответу на суперпользователя.
Вы можете заметить доступную команду source
. Важно отметить, что это источник файла команд screen
, а не команд оболочки. Другие соответствующие (экранные) команды включают eval
и exec
.