Jeśli twój sshd nie dostarcza użytecznych zmiennych, możesz użyć
ps -p $PPID
lub inną losową sztuczkę ps (jeśli twoja powłoka nie jest ustawiona $PPID
), aby sprawdzić, czy proces macierzysty powłoki jest procesem zdalnego logowania, czy nie. Następnie, jeśli rodzic-zdalny-rzecz-przełącznik $ PS1. Następnie pobierz OpenSSH i skorzystaj z sugestii geekozaura / Caleba, ponieważ twój serwer ssh jest śmieci. ;)
Możesz też użyć danych wyjściowych „kim jestem”, złapać ostatnie pole (tj. $( who am i | awk '$0=$NF')
) I sprawdzić, czy host jest zdalny, czy lokalny, aby zdecydować, czy zalogowałeś się lokalnie, czy zdalnie.
Lub możesz włączyć wyjście, $(hostname)
aby powłoka używała odpowiedniego $ PS1 na określonych hostach.
Albo naprawdę zwariujmy. Jeśli używasz nowoczesnej powłoki - jak bash, ksh93 lub zsh, możesz skorzystać z faktu, że $ PS1 jest ponownie wyceniany po wykonaniu. Więc możesz dołączyć wbudowany blok warunkowy, aby zrobić szalone rzeczy z git, jeśli twój cwd znajduje się w repozytorium, a coś innego na zewnątrz. Na przykład tutaj wprowadzam szybką zmianę w zależności od katalogu, w którym jestem, używając [[ conditional ]] && $( echo "whatever it should be if true) || $( echo "whatever should be the if-not-true prompt" )
, w zasadzie.
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$
Jasne, definicja $ PS1 będzie wyglądać szalona w twoim profilu, ale wtedy otrzymasz super-kolorowe-git-rzeczy tylko wtedy, gdy faktycznie jesteś w repozytorium git, podczas gdy masz normalne kolory gdzie indziej. :) Pamiętaj, że musisz używać pojedynczych cudzysłowów wokół zadania PS1. Nie chcesz, aby zmienne były rozszerzane, gdy przypisany jest PS1; chcesz je rozwinąć, gdy $ PS1 zostanie oszacowany później. Więc pojedyncze cudzysłowy.