如果你的sshd没有提供有用的变量,你可以使用
ps -p $PPID
或者其他一些随机的ps技巧(如果你的shell没有设置$PPID
)来查看shell的父进程是否是你的远程登录进程。然后,如果parent-is-remote-thingie切换$ PS1。然后下载OpenSSH并使用geekosaur / Caleb的建议,因为你的ssh服务器是垃圾。;)
或者,您可以使用“我是谁”的输出,抓取最后一个字段(即$( who am i | awk '$0=$NF')
),并检查主机是远程主机还是本地主机,以确定您是本地还是远程登录。
或者您可以打开输出$(hostname)
以使您的shell在特定主机上使用适当的$ PS1。
或者,让我们真的疯了。如果您使用的是现代shell(如bash,ksh93或zsh),则可以利用$ PS1在执行时重新评估的事实。所以,如果你的cwd在存储库中,你可以包含一个内联条件块来做疯狂的git东西,以及其他东西。例如,在这里,我正在根据我所使用的目录进行快速更改[[ 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时展开。所以,单引号。