Si su sshd no proporciona variables útiles, puede usar
ps -p $PPID
o algún otro truco ps aleatorio (si su shell no está configurado $PPID
) para ver si el proceso padre del shell es su proceso de inicio de sesión remoto o no. Entonces, si parent-is-remote-thingie cambia $ PS1. Y luego descargue OpenSSH y use las sugerencias de geekosaur / Caleb porque su servidor ssh es basura. ;)
O bien, puede usar la salida de "quién soy yo", tomar el último campo (es decir, $( who am i | awk '$0=$NF')
) y verificar si el host es remoto o local para decidir si inició sesión local o remotamente.
O puede activar la salida de $(hostname)
para que su shell use el $ PS1 apropiado en hosts específicos.
O, vamos a volvernos locos. Si está utilizando un shell moderno, como bash, ksh93 o zsh, puede aprovechar el hecho de que $ PS1 se reevalúa en la ejecución. Por lo tanto, podría incluir un bloque condicional en línea para hacer lo loco si su cwd está dentro del repositorio y algo más afuera. Por ejemplo, aquí estoy haciendo mi cambio rápido dependiendo del directorio en el que estoy usando [[ conditional ]] && $( echo "whatever it should be if true) || $( echo "whatever should be the if-not-true prompt" )
, básicamente.
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$
Claro, la definición de $ PS1 se verá loca en su perfil, pero luego solo obtendrá cosas super-coloridas-git cuando esté realmente en el repositorio de git, mientras tenga colores regulares en otros lugares. :) Tenga en cuenta que debe usar comillas simples alrededor de la asignación de PS1. No desea que las variables se expandan cuando se asigna PS1; desea que se expandan cuando $ PS1 se evalúa más tarde. Entonces, comillas simples.