12

У меня есть несколько пользовательских настроек в моем bash_profile. когда я использовал gnu-screen, я понял, что мои экраны не выполняют source /Users/disappearedng/.bash_profile . Я пытаюсь поместить источник /Users/disappearedng/.bash_profile в мой файл .screenrc, но затем он жалуется, что псевдоним не является командой ... (Я полагаю, что screenrc нужна специальная команда для screenrc).

Я попытался изменить мой .bash_profile на .profile или .bash_rc. Ничего из этой работы.

Любая помощь?

3 ответа3

14

Файл .bash_profile (а также файл .profile) загружается для оболочек входа в систему, оболочки без входа в систему используют .bashrc (без символа _). В файле .screenrc есть строка, которая сообщает экрану, какую оболочку создавать при запуске окна экрана (когда не запускается определенная программа в качестве оконного приложения). В моем файле .screenrc это так (включая комментарии):

# shell:  Default process started in screen's windows.
# Makes it possible to use a different shell inside screen
# than is set as the default login shell.
# If begins with a '-' character, the shell will be started as a login shell.
  shell -$SHELL

Проверьте файл .screenrc и убедитесь, что перед строкой оболочки есть черточка. Имея этот символ тире и форсируя входную оболочку, вы получите ваш .bash_profile. Переменная $ SHELL в моем .screenrc использует значение оболочки, предоставленное оболочкой, которая запускает экран (обычно для меня это bash).

В случае, если вам интересно, самое большое различие, которое я смог обнаружить между входящими в систему и не входящими в систему оболочками, состоит в том, что оболочка, не входящая в систему, обычно вызывается для выполнения сценариев.

2

Sourcing .bash_profile - это нечто отличное от того, что делает терминальное приложение Mac, чего не делает большинство терминальных приложений. Однако Screen читает ~/.bashrc каждый раз, когда вы создаете новую оболочку.

Если вы переименуете ~/.bash_profile в ~/.bashrc (без подчеркивания между bash и rc, как в вашем вопросе), то он будет получен.

Однако моя предпочтительная стратегия - поместить все мои настройки в bashrc , а затем получить его из bash_profile следующим образом:

[ -f .bashrc ] && . .bashrc
-1

Вам не нужно изменять какой-либо конфигурационный файл, если вы записываете все свои настройки в .bash_profile , как вы обычно это делаете для настройки своего терминала, и создаете ссылку с именем .bashrc указывающую на ваш .bash_profile для сеансов экрана через:

$ ln -s ~/.bash_profile ~/.bashrc

Любые изменения, внесенные в один из файлов, хранятся в .bash_profile но также доступны для .bashrc .

Единственным недостатком является то, что вы не можете добавить настройки только в один из файлов конфигурации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .