Przyrównujesz ustawienia lokalne do ustawień zdalnych .
Lokalnie instancja bash, bieżąca działająca powłoka, w której piszesz:
ssh user@host command
Wykona polecenie ssh (nic więcej) jako ssh klienta.
Aby to zrobić, lokalna powłoka nie musi uruchamiać podpowłoki, nowej powłoki ani logować się.
Polecenie jest wykonywane jako lspolecenie: lokalnie.
Jest to komenda ssh klienta, która otwiera połączenie sieciowe ze zdalnym systemem, gdzie, jeśli jest poprawnie uwierzytelnione, nowe zostanie powłoka, aby wykonać komendę zapisaną jako argument dla ssh lub, jeśli nie podano żadnego argumentu, oczekiwać dalszych poleceń na tym połączeniu.
Ta nowa powłoka zdalna koniecznie będzie powłoką logowania, ponieważ użytkownik zdalny (do tego systemu) musi zostać uwierzytelniony podczas logowania. Lub, jeśli podano określone polecenie, po prostu uruchom je z uprawnieniami uwierzytelnionego użytkownika.
Możesz zobaczyć, które pliki są pobierane, dodając $file sourcedna początku każdego pliku (w systemie zdalnym ) (root jest potrzebny do zmiany /etc/plików):
$ a=(~/.bashrc ~/.profile /etc/bash.bashrc /etc/profile)
$ for f in "${a[@]}"; do sed -i '1 i\echo "'"$f"' was read"\n' "$f"; done
A potem po prostu uruchom konsolę ssh:
$ ssh sorontar@localhost
/etc/profile was read
/etc/bash.bashrc was read
/home/sorontar/.profile was read
/home/sorontar/.bashrc was read
W tym przypadku oba bashrcpliki zostały odczytane, ponieważ każdy profileplik zawierał polecenia do ich włączenia, a nie dlatego, że powłoka logowania bezpośrednio je pozyskała.
$ ssh sorontar@localhost :
/etc/bash.bashrc was read
/home/sorontar/.bashrc was read
W tym systemie, gdzie bashrcjest czytany w obu przypadkach.
Nie trzeba dodawać a source ~/.bashrcdo polecenia, aby wykonać.
Zmień ŚCIEŻKĘ
Wszystko, co musisz zrobić, to podać prawidłowe ustawienia, aby zmienić „$ PATH” /etc/bash.bashrcdla wszystkich użytkowników, którzy uruchamiają powłokę w tym systemie. Lub ~/.bashrcdla każdego użytkownika, który tego potrzebuje. Możesz dodać (lub edytować) szkielet użytkownika, .bashrcaby /etc/skel/każdy nowy użytkownik mógł utworzyć właściwy plik.
Powyższe dotyczy tylko bash. Jeśli potrzebujesz ustawienia do działania dla wszystkich powłok, prawdopodobnie ustaw zmienną środowiskową PATH za pomocą pliku ssh ~/.ssh/environmentdla każdego użytkownika, który tego potrzebuje. Lub użyj /etc/ssh/sshrcdo ustawienia globalnego w systemie, w którym działa serwer ssh (proszę przeczytać sekcję Pliki, man sshdaby uzyskać dodatkowe informacje).
.bashrcjest pozyskiwany, ale prawdopodobnie ma test interaktywności u góry. Rzeczy, które umieściłeś przed tym sprawdzeniem, powinny mieć zastosowanie, i to właśnie robię, aby wymusić ŚCIEŻKĘ, gdy serwer nie zezwala na środowisko użytkownika ani używanie~/.pam_environment.