sshd가 유용한 변수를 제공하지 않으면 사용할 수 있습니다
ps -p $PPID
$PPID
쉘의 부모 프로세스가 원격 로그인 프로세스인지 아닌지를 확인하기 위해 다른 임의의 ps 트릭 (쉘이 설정되지 않은 경우). 그런 다음 parent-is-remote-thingie 인 경우 $ PS1을 전환하십시오. 그리고 ssh 서버가 정크이기 때문에 OpenSSH를 다운로드하고 geekosaur / Caleb의 제안을 사용하십시오. ;)
또는 "who am i"의 출력을 사용하고 마지막 필드 (예 :)를 잡고 $( who am i | awk '$0=$NF')
호스트가 원격 호스트인지 로컬인지 확인하여 로컬 또는 원격으로 로그인했는지 여부를 결정할 수 있습니다.
또는 $(hostname)
특정 호스트에서 쉘이 적절한 $ PS1을 사용하도록 출력을 켤 수 있습니다 .
아니면 정말 간절히 가자. bash, ksh93 또는 zsh와 같은 최신 쉘을 사용하는 경우 실행시 $ PS1이 재평가된다는 사실을 이용할 수 있습니다. 따라서 cwd가 저장소 내에 있고 외부에있는 경우 미친 자식 작업을 수행하기 위해 인라인 조건부 블록을 포함 할 수 있습니다. 예를 들어, 여기 [[ conditional ]] && $( echo "whatever it should be if true) || $( echo "whatever should be the if-not-true prompt" )
에서는 기본적으로을 사용하여 디렉토리에 따라 프롬프트를 변경합니다 .
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$
확실히, $ PS1 정의는 프로파일에서 미치게 보일 것입니다. 그러나 실제로 git 저장소에있을 때 슈퍼 컬러 풀 한 git-stuff 만 얻고 다른 곳에서는 규칙적인 색상을 얻습니다. :) PS1 할당에 작은 따옴표를 사용해야합니다. PS1이 할당 될 때 변수가 확장되는 것을 원하지 않습니다. 나중에 $ PS1을 평가할 때 확장하기를 원합니다. 작은 따옴표.