Почему мой .bashrc читается, когда я запускаю неинтерактивные команды по ssh

Я добавил каждый из моих конфигурационных файлов bash ( ~/.bashrc , ~/.bash_profile , ~/.profile ) с echo NAME_OF_FILE , то есть я получаю '.bashrc', когда я источник в ~/.bashrc .

Что меня сбивает с толку, так это то, что я получаю и указываю, что ~ / .bashrc включается, когда я запускаю команду над ssh. Например, если я это сделаю:

 ssh localhost echo hi 

я получил

 .bashrc hi 

Почему в этом контексте получается ~/.bashrc ? Должен ли он НЕ получить источник, поскольку это должно запустить неинтерактивную сессию bash?

Действительно, ssh localhost tty получает меня «не tty» (которому предшествует «.bashrc», указывающий, что ~/.bashrc получает источники, тем не менее).

Я хочу, чтобы все мои файлы конфигурации для команд sourcing в ~/.bashrc явно, и нет никаких объяснений.

(У меня только tty -s && shopt -q login_shell && [[ -r ~/.bashrc ]] && . ~/.bashrc в моем .bash_profile так что я получаю «.bashrc» даже в интерактивных оболочках входа, но это doesn 'T объяснить проблему ssh – я могу прокомментировать это, и я все еще получаю такое же поведение с приведенными выше примерами ssh)

Как я могу отладить это?

Из bash страницы bash :

 Bash attempts to determine when it is being run with its standard input connected to aa network con‐nection, as if by the remote shell daemon, usually rshd, or the secure shell daemon sshd. If bash determines it is being run in this fashion, it reads and executes commands from ~/.bashrc, if that file exists and is readable. 

Т.е. ~/.bashrc будет запускаться, когда вы вызываете его через ssh , независимо от того, есть ли у вас tty или нет.

Если вы хотите, чтобы ваш .bashrc запускался, когда вы интерактивны, попробуйте это вверху:

 # If not running interactively, don't do anything [[ "$-" != *i* ]] && return 

Если это не сработает, попробуйте следующее:

 [ -z "$PS1" ] && return 
  • Как я могу получить SSH в Windows, например, в Linux или OS X
  • SSH: сбой с закрытым ключом, работает с копией ключа, расположенного в другом месте
  • Не удалось выполнить SSH для моей виртуальной машины через Windows Power Shell ISE
  • Ubuntu 10.04 с помощью ssh без ввода пароля
  • Удалите все созданные Mac файлы ._ 'с bash
  • Передача агента SSH не работает
  • Почему случайные символы вставлены в мой сеанс tmux?
  • Сохранить идентификаторы, добавленные ssh-add, чтобы они сохранялись
  • Различия между ssh -L -D
  • Есть ли (бесплатный) способ настройки удаленного доступа к рабочему столу без настройки маршрутизатора?
  • Разрешения ssh и home directory
  • Interesting Posts
    Давайте будем гением компьютера.