Se il tuo sshd non fornisce variabili utili, puoi usarlo
ps -p $PPID
o qualche altro trucco ps casuale (se la shell non si imposta $PPID
) per vedere se il processo genitore della shell è il processo di accesso remoto o meno. Quindi se parent-is-remote-thingie cambia $ PS1. E quindi scarica OpenSSH e usa i suggerimenti di geekosaur / Caleb perché il tuo server SSH è spazzatura. ;)
In alternativa, è possibile utilizzare l'output di "who am i", acquisire l'ultimo campo (ovvero, $( who am i | awk '$0=$NF')
) e verificare se l'host è remoto o locale per decidere se si è effettuato l'accesso localmente o in remoto.
Oppure puoi attivare l'output di $(hostname)
affinché la tua shell usi $ PS1 appropriato su host specifici.
Oppure, andiamo davvero fuori di testa. Se stai usando una shell moderna, come bash, ksh93 o zsh, puoi trarre vantaggio dal fatto che $ PS1 viene rivalutato al momento dell'esecuzione. Quindi, potresti includere un blocco condizionale in linea per fare le cose folli git se il tuo CWD è all'interno del repository e qualcos'altro al di fuori. Ad esempio, qui sto facendo il mio rapido cambiamento a seconda della directory in cui mi trovo utilizzando [[ conditional ]] && $( echo "whatever it should be if true) || $( echo "whatever should be the if-not-true prompt" )
, in pratica.
default prompt$ PS1='$(id -un) @ $(hostname)$( [[ $(pwd) = /tmp ]] && echo " [I am in /tmp]" || echo " /not/in/tmp")$ '
myname @ host /not/in/tmp$ cd /tmp
myname @ host [I am in /tmp]$ cd /etc
myname @ host /not/in/tmp$
Certo, la definizione di $ PS1 apparirà pazza nel tuo profilo, ma otterrai solo roba git super colorata quando sei effettivamente nel repository git, mentre hai colori regolari altrove. :) Nota che devi usare virgolette singole intorno all'assegnazione PS1. Non si desidera espandere le variabili quando viene assegnata PS1; li vuoi espandere quando $ PS1 viene valutato in seguito. Quindi virgolette singole.