Вы приравниваете локальные настройки к удаленным настройкам.
Локально, экземпляр bash, текущая запущенная оболочка, в которой вы пишете:
ssh user@host command
Выполнит команду ssh (ничего более) как клиент ssh.
Для этого локальной оболочке не нужно запускать вложенную оболочку или новую оболочку или вход в систему.
Команда выполняется как lsкоманда: локально.
Это клиентская команда ssh, которая открывает сетевое соединение с удаленной системой, где при правильной аутентификации запускается новая оболочка для выполнения команды, записанной в качестве аргумента для ssh, или, если аргумент не указан, ожидают дальнейших команд на этой связи.
Это новый Remote оболочки обязательно будет Войти оболочки , как удаленный пользователь (к этой системе) необходимо пройти проверку подлинности входа в систему . Или, если задана какая-то конкретная команда, просто запустите такую команду с привилегиями аутентифицированного пользователя.
Вы можете увидеть, какие файлы получены, добавив $file sourcedв начало каждого файла (в удаленной системе) (root нужен для изменения /etc/файлов):
$ a=(~/.bashrc ~/.profile /etc/bash.bashrc /etc/profile)
$ for f in "${a[@]}"; do sed -i '1 i\echo "'"$f"' was read"\n' "$f"; done
А затем просто запустите консоль ssh:
$ ssh sorontar@localhost
/etc/profile was read
/etc/bash.bashrc was read
/home/sorontar/.profile was read
/home/sorontar/.bashrc was read
В этом случае оба bashrcфайла были прочитаны, потому что у каждого profileфайла были команды для их включения, а не потому, что оболочка входа в систему непосредственно их получала.
$ ssh sorontar@localhost :
/etc/bash.bashrc was read
/home/sorontar/.bashrc was read
В этой системе, где bashrcчитается в обоих случаях.
Нет необходимости добавлять source ~/.bashrcк команде для выполнения.
Изменить ПУТЬ
Все, что вам нужно сделать, это включить правильные настройки для изменения «$ PATH», либо /etc/bash.bashrcдля всех пользователей, которые запускают оболочку в этой системе. Или ~/.bashrcдля каждого пользователя, который нуждается в этом. Вы можете добавить (или изменить) в скелет пользователя , .bashrcчтобы /etc/skel/иметь какой - либо новый пользователь , созданный иметь правильный файл доступный.
Вышесказанное действует только для bash. Если вам нужно, чтобы этот параметр работал для всех оболочек, возможно, установите переменную среды PATH, используя файл ssh ~/.ssh/environmentдля каждого пользователя, который в этом нуждается. Или используйте /etc/ssh/sshrcглобальный параметр в системе, где работает ssh-сервер ( man sshdдля получения дополнительной информации прочтите раздел «Файлы» ).
.bashrcИсточник, но он, вероятно, имеет тест на интерактивность в верхней части. Вещи, которые вы ставите перед этой проверкой, должны применяться, и это то, что я делаю, чтобы заставить PATH, когда сервер не разрешает пользовательскую среду или использование~/.pam_environment.