Jeśli chcesz tylko wysłać PS1
zmienną, która nie zawiera '
(pojedynczego cudzysłowu), spróbuj:
ssh targethost -t "PS1='$PS1'; exec bash"
Lokalny .bashrc
może PS1
jednak nadpisać (dzięki Dennis Williamson za zwrócenie na to uwagi).
Istnieją sposoby przesyłania zmiennych środowiskowych przez ssh , ale zwykle są one wyłączone w konfiguracji serwera. Jeśli PermitUserEnvironment
dyrektywa jest włączona w konfiguracji serwera, a każdy użytkownik ma własną parę kluczy (tak, możesz nie mieć tyle szczęścia), możesz dodać environment="PS1=…"
do linii ~/.ssh/authorized_keys
odpowiadającą kluczowi.
Jeśli chcesz zachować własną konfigurację na wspólnym koncie użytkownika, możesz utworzyć własny katalog plików konfiguracyjnych i ustawić HOME
zmienną środowiskową tak, aby wskazywała ten katalog.
ssh targethost mkdir mrstatic.home
scp .bashrc targethost:mrstatic.home/
Utwórz dowiązania symboliczne w mrstatic.home
katalogu wskazujące odpowiedni wpis w katalogu nadrzędnym, gdy chcesz udostępnić plik innym użytkownikom.
Następnie zaloguj się za pomocą
ssh targethost -t 'HOME=~/mrstatic.home; exec bash'`
Jeśli chcesz zmodyfikować zdalny .profile
(lub inny plik inicjujący), prawdopodobnie możesz zautomatyzować swoje ustawienia. Wiele witryn zezwala na LC_*
zmienne środowiskowe (zwykle są używane do ustawień regionalnych). Jeśli oba te warunki są spełnione, możesz ustawić zmienną, która nie jest używana w lokalizacjach, powiedzmy LC_USER
, po stronie klienta i przetestować ją na serwerze .profile
.
(Oczywiście wspólne konta to zły pomysł, ale zdaję sobie sprawę, że możesz nie być w stanie zmienić tej sytuacji).
"PS1='$PS1' bash -i"
(i dlaczego nieexec
też)?