Как мне получить экран GNU для чтения изменений .bash_profile / .bash_rc? - PullRequest
35 голосов
/ 04 августа 2011

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

source ~/.bash_profile

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

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

Ответы [ 2 ]

53 голосов
/ 06 декабря 2013

Если вы хотите, чтобы screen всегда воспринимал вашу оболочку как оболочку входа в систему и исходные файлы, которые были бы прочитаны при обычном запуске новой оболочки, добавьте следующее к ~/.screenrc (или, возможно, ~/.byobu/.screenrc, как указано в комментарии):

shell -$SHELL

Таким образом, вам не нужно вручную указывать исходные файлы при каждом запуске нового экрана. Хотя вам придется это сделать, если вы просто внесли изменения и хотели, чтобы эти изменения были отражены на вашем текущем экране.

Документацию для этого (и множество других подробностей экрана) можно найти здесь . По сути, shell - это команда для показа на экране, указывающая, что нужно выполнить следующее, когда нужно создать новую оболочку. $SHELL - это обычная переменная, содержащая путь к вашей предпочтительной оболочке. А тире - перед $SHELL указывает на то, что он должен быть запущен как оболочка для входа (что обычно означает, что он получает ваш ~/.bash_profile и т. Д.).

Однако стоит отметить, что по умолчанию экран просто наследует большинство переменных среды из оболочки, в которой вы запускаете экран; и под-оболочка входа в систему может неожиданно изменить некоторые переменные среды. Я столкнулся с ситуацией, когда элементы моего $ PATH были в основном переставлены. Я решил проблему благодаря этому особенно отличному ответу на суперпользователя.

Вы можете заметить доступную команду source. Важно отметить, что это источник файла screen команд, а не команд оболочки. Другие соответствующие (экранные) команды включают eval и exec.

17 голосов
/ 04 августа 2011

Вы должны делать это на каждом экране, который у вас открыт, так как все они разные оболочки.Если вам нужно вносить изменения каждый раз, когда открывается новая оболочка, я предлагаю вместо этого поместить эти изменения в ~ / .bashrc.

По-видимому, вы можете отправить команду всем окнам одновременно, используя этот синтаксис :

C-a :
at "#" stuff "source ~/.bash_profile^M"
...