Подтвердить что ты не робот

Как получить экран GNU для чтения изменений .bash_profile/.bash_rc?

После внесения изменений в .bash_rc или .bash_profile, когда я запускаю экран GNU, он не распознает эти изменения. Я могу

source ~/.bash_profile

и он работает для текущего окна экрана, который у меня открыт, но я должен сделать это для каждого окна экрана, которое у меня открыто.

Как мне получить экран для просмотра моих последних изменений в моей конфигурации bash?

4b9b3361

Ответ 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.