2

Мне кажется, что каждый дистрибутив Linux, в котором я использую SSH или использую его локально (в основном машины RHEL/CentOS и Debian/Ubuntu), по-разному понимает, какой из .bashrc и .bash_profile будет запускаться при локальном входе в систему, когда я выполняю SSH в когда я открываю tmux или когда запускаю команды оболочки из VIM.

У меня есть несколько сценариев, которые я хотел бы запустить при входе в систему, будь то через SSH или на консоли. Например, я хотел бы видеть вывод uptime , free и df при входе в систему. Я могу войти в систему с самого компьютера (рабочий стол Kubuntu в сеансе KDE через Konsole), или я могу войти по SSH из дома на ту же машину. Однако эти сценарии не должны запускаться, например, при запуске команды оболочки из VIM. Должны ли они быть в .bashrc или .bash_profile?

Кроме того, у меня есть некоторые псевдонимы, которые я хотел бы сделать доступными из CLI, независимо от того, вошел ли я с локальной машины (KDE и Konsole) или в SSHed. Они также должны быть доступны с VIM при запуске команд оболочки, а также в tmux. Должны ли они быть в .bashrc или .bash_profile?

Изменить: Кажется, что проверка переменных среды может помочь, используя условия IF установки вещей, которые мне нужны. Затем я поместил бы все конфигурации в третий файл .bash_dotan , а затем получил этот файл из обоих .bashrc и .bash_profile чтобы обеспечить его постоянную работу. Я мог бы обернуть все это в условное условие IF [ALREADY_RUN] чтобы гарантировать, что оно не будет выполняться дважды, если оба источника .bashrc и .bash_profile получены. Есть ли проблемы с этим подходом, которых я не ожидаю?

1 ответ1

1

Возможно , самый простой способ, чтобы посмотреть на то , что переменные окружения устанавливаются при войти через различные методы, а затем, используя таблицу, Daniel Beck предложенное, установить условные операторы в соответствующем .bash* файл. Например, когда я захожу на свой веб-сервер через SSH, устанавливаются такие переменные, как SSH_TTY , а не когда я захожу в свой домашний ящик из X.

if [ "$SSH_TTY" ]; then
    echo "SSH_TTY is $SSH_TTY"
else
    echo "You are logged in locally"
fi 

Вы можете узнать, какие переменные установлены, запустив export и env из командной строки. Вы также можете запустить set , но если у вас установлен rvm (менеджер версий Ruby), вы получите все содержимое скрипта, так что используйте пейджер, как less .

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