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 ls
polecenie: 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 sourced
na 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 bashrc
pliki zostały odczytane, ponieważ każdy profile
plik 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 bashrc
jest czytany w obu przypadkach.
Nie trzeba dodawać a source ~/.bashrc
do polecenia, aby wykonać.
Zmień ŚCIEŻKĘ
Wszystko, co musisz zrobić, to podać prawidłowe ustawienia, aby zmienić „$ PATH” /etc/bash.bashrc
dla wszystkich użytkowników, którzy uruchamiają powłokę w tym systemie. Lub ~/.bashrc
dla każdego użytkownika, który tego potrzebuje. Możesz dodać (lub edytować) szkielet użytkownika, .bashrc
aby /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/environment
dla każdego użytkownika, który tego potrzebuje. Lub użyj /etc/ssh/sshrc
do ustawienia globalnego w systemie, w którym działa serwer ssh (proszę przeczytać sekcję Pliki, man sshd
aby uzyskać dodatkowe informacje).
.bashrc
jest 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
.