Se o seu sshd não estiver fornecendo variáveis úteis, você poderá usar
ps -p $PPID
ou algum outro truque aleatório do ps (se o seu shell não estiver definido $PPID
) para ver se o processo pai do shell é o seu processo de login remoto ou não. Então, se pai-é-coisa-remota, alterne $ PS1. Em seguida, baixe o OpenSSH e use as sugestões de geekosaur / Caleb porque seu servidor ssh é lixo. ;)
Ou, você pode usar a saída de "quem sou eu", pegar o último campo (por exemplo, $( who am i | awk '$0=$NF')
) e verificar se o host é remoto ou local para decidir se você efetuou login local ou remotamente.
Ou você pode ativar a saída de $(hostname)
para que seu shell use o $ PS1 apropriado em hosts específicos.
Ou, vamos realmente enlouquecer. Se você estiver usando um shell moderno - como bash, ksh93 ou zsh, poderá aproveitar o fato de que o $ PS1 é reavaliado após a execução. Portanto, você pode incluir um bloco condicional em linha para executar as coisas malucas do git se o seu cwd estiver dentro do repositório e algo mais fora. Por exemplo, aqui estou fazendo minha alteração imediata, dependendo do diretório em que estou usando [[ conditional ]] && $( echo "whatever it should be if true) || $( echo "whatever should be the if-not-true prompt" )
, basicamente.
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, a definição $ PS1 ficará louca no seu perfil, mas você só terá coisas super coloridas quando estiver no repositório git, enquanto tiver cores regulares em outros lugares. :) Observe que você precisa usar aspas simples na atribuição do PS1. Você não deseja que as variáveis sejam expandidas quando o PS1 estiver atribuído; você deseja que eles sejam expandidos quando $ PS1 for avaliado posteriormente. Então, aspas simples.