Si votre sshd ne fournit pas de variables utiles, vous pouvez utiliser
ps -p $PPID
ou une autre astuce ps aléatoire (si votre shell n'est pas défini $PPID
) pour voir si le processus parent du shell est votre processus de connexion à distance ou non. Ensuite, si parent-is-remote-thingie change $ PS1. Ensuite, téléchargez OpenSSH et utilisez les suggestions de geekosaur / Caleb car votre serveur ssh est indésirable. ;)
Ou, vous pouvez utiliser la sortie de "qui suis-je", saisir le dernier champ (c.-à-d. $( who am i | awk '$0=$NF')
) Et vérifier si l'hôte est distant ou local pour décider si vous vous êtes connecté localement ou à distance.
Ou vous pouvez activer la sortie de $(hostname)
pour que votre shell utilise la $ PS1 appropriée sur des hôtes spécifiques.
Ou, allons vraiment fou. Si vous utilisez un shell moderne comme bash, ksh93 ou zsh, vous pouvez profiter du fait que $ PS1 est réévalué lors de l'exécution. Donc, vous pouvez inclure un bloc conditionnel en ligne pour faire les trucs fous si votre cwd est dans le référentiel, et quelque chose d'autre à l'extérieur. Par exemple, ici, je fais ma modification rapide en fonction du répertoire dans lequel j'utilise [[ conditional ]] && $( echo "whatever it should be if true) || $( echo "whatever should be the if-not-true prompt" )
, en gros.
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$
Bien sûr, la définition de $ PS1 semblera folle dans votre profil, mais vous n'obtiendrez alors que des trucs super colorés lorsque vous êtes réellement dans le référentiel git, tandis que vous avez des couleurs régulières ailleurs. :) Notez que vous devez utiliser des guillemets simples autour de l'affectation PS1. Vous ne voulez pas que les variables soient développées lorsque PS1 est affecté; vous souhaitez les développer lorsque $ PS1 est évalué ultérieurement. Donc, guillemets simples.