Я заметил, что когда я запускаю команду непосредственно на хосте SSH с использованием ssh <host> <command>синтаксиса, я вижу вывод, .bashrcно не вывод .bash_profile(или .profile).
Например, если я помещу следующую команду вверху обоих файлов,
echo $ и вручную источник .bash_profile(какие источники .bashrcв свою очередь), я посмотрю
$ . .bash_profile .bash_profile .bashrc Это тот же вывод, который я вижу, если я подключаюсь к этому компьютеру удаленно через SSH, используя ssh <host>форму команды. (И если я .bash_profileвременно уложу в другое место, ни одна из этих строк не будет отражена.)
Однако, если я выполню команду непосредственно на удаленной машине в ssh <host> <command>форме ssh, то результат будет выглядеть следующим образом:
$ ssh <host> echo foo /home/rlue/.bashrc foo Я понимаю, что разница между .bash_profileи .bashrcв том, что бывший для оболочек входа в то время как последний для интерактивных, без входа в оболочках .
Я заключил следующее:
ssh <host>только источники.bash_profile, в то время какssh <host> <command>только источники.bashrc, что означает- первая - это оболочка для входа, а вторая - нет.
Верны ли эти выводы? Почему ssh <host> <command>рассматривается как интерактивная оболочка без входа в систему? Разве SSH все еще не входит в удаленную машину для выполнения команды?
вывод
.bashrc? Этот файл не должен производить никаких выходных данных. Любой вывод из.bashrcможет сломать все инструменты, используя ssh в качестве транспорта.