Stai equiparando le impostazioni locali alle impostazioni remote .
Localmente, un'istanza bash, l'attuale shell in esecuzione in cui si scrive:
ssh user@host command
Eseguirà il comando ssh (niente di più) come client ssh.
Per fare ciò la shell locale non deve avviare una sub-shell o una nuova shell o effettuare il login.
Il comando viene eseguito come lscomando è: localmente.
È il comando client ssh che apre una connessione di rete a un sistema remoto , dove, se autenticato correttamente, verrà avviata una nuova shell per eseguire il comando scritto come argomento su ssh o, se non viene fornito alcun argomento, si aspettano ulteriori comandi su quella connessione.
Quella nuova shell remota sarà necessariamente una shell di accesso poiché l'utente remoto (per quel sistema) deve essere autenticato per accedere. Oppure, se viene fornito un comando specifico, basta eseguire tale comando con i privilegi dell'utente autenticato.
Puoi vedere quali file provengono aggiungendo $file sourceda all'inizio di ogni file (nel sistema remoto ) (è necessario root per cambiare i /etc/file):
$ a=(~/.bashrc ~/.profile /etc/bash.bashrc /etc/profile)
$ for f in "${a[@]}"; do sed -i '1 i\echo "'"$f"' was read"\n' "$f"; done
E poi basta avviare una console ssh:
$ ssh sorontar@localhost
/etc/profile was read
/etc/bash.bashrc was read
/home/sorontar/.profile was read
/home/sorontar/.bashrc was read
In questo caso, entrambi i bashrcfile sono stati letti perché ogni profilefile aveva i comandi per includerli, non perché la shell di login li proviene direttamente.
$ ssh sorontar@localhost :
/etc/bash.bashrc was read
/home/sorontar/.bashrc was read
In questo sistema, dove bashrcviene letto in entrambi i casi.
Non è necessario aggiungere source ~/.bashrca al comando per eseguire.
Cambia PERCORSO
Tutto quello che devi fare è includere le impostazioni corrette per modificare "$ PATH", sia /etc/bash.bashrcper tutti gli utenti che avviano una shell in questo sistema. O ~/.bashrcper ogni utente che ne ha bisogno. Si potrebbe aggiungere (o modificare) uno scheletro di un utente .bashrcper /etc/skel/avere ogni nuovo utente creato avere il file corretto disponibili.
Quanto sopra è valido solo per bash. Se hai bisogno che l'impostazione funzioni per tutte le shell, probabilmente imposta la variabile d'ambiente PATH usando il file ssh ~/.ssh/environmentper ogni utente che ne ha bisogno. Oppure utilizzare /etc/ssh/sshrcper un'impostazione globale nel sistema in cui è in esecuzione il server SSH (leggere la sezione File man sshdper ulteriori dettagli).
.bashrcè di provenienza, ma probabilmente ha un test di interattività nella parte superiore. Le cose che metti prima di quel controllo dovrebbero applicarsi, ed è quello che faccio per forzare PATH quando il server non consente l'ambiente dell'utente o l'uso~/.pam_environment.