Где можно разместить команды, которые я хочу запустить для всех интерактивных оболочек, не входящих в систему?

Обычно в bash ответом будет ~ / .bashrc или /etc/bash.bashrc. Но, к сожалению, Ubuntu получает эти файлы из ~ / .profile и / etc / profile соответственно. Итак, где я должен поместить такие команды в Ubuntu?

См. Также Почему / etc / profile не вызывается для оболочек, не входящих в систему? , если вы не знакомы с этими файлами.

0
задан 13 April 2017 в 15:25

2 ответа

При открытии Вашего man bash можно найти где-нибудь в строке 150:

When an interactive shell that is not a login shell  is  started,  bash
reads  and  executes  commands  from /etc/bash.bashrc and ~/.bashrc, if
these files exist.  This may be inhibited by using the  --norc  option.
The  --rcfile  file option will force bash to read and execute commands
from file instead of /etc/bash.bashrc and ~/.bashrc.

Так, можно использовать с уверенностью ~/.bashrc (или /etc/bash.bashrc, но я не буду совет Вы для использования этого файла в масштабе всей системы) для цели. И да, в Ubuntu.

0
ответ дан 13 April 2017 в 15:25

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

Добавляют это к началу /etc/profile:

IS_LOGIN_SHELL=1

Затем в /etc/bash.bashrc или ~/.bashrc тест для этой переменной:

if [ -n "${IS_LOGIN_SHELL-}" ]; then
   # Put your commands here
fi

, Надо надеяться, имя переменной не столкнется ни с чем больше, и это не изменяет то, на что могут полагаться другие части Ubuntu.

0
ответ дан 13 April 2017 в 15:25

Другие вопросы по тегам:

Похожие вопросы: