Если ваш sshd не предоставляет полезных переменных, вы можете использовать
ps -p $PPID
или какой-нибудь другой случайный ps трюк (если ваша оболочка не устанавливает $PPID
), чтобы посмотреть, является ли родительский процесс оболочки вашим процессом удаленного входа в систему или нет. Тогда, если родительский-удаленный-штуковый переключатель $ PS1. А затем загрузите OpenSSH и воспользуйтесь рекомендациями geekosaur/Caleb, потому что ваш ssh-сервер является нежелательным. ;)
Или вы можете использовать вывод "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-репозитории, в то время как у вас есть обычные цвета в других местах. :) Обратите внимание, что вы должны использовать одинарные кавычки вокруг задания PS1. Вы не хотите, чтобы переменные расширились, когда PS1 назначен; Вы хотите, чтобы они расширились, когда $ PS1 будет оценен позже. Итак, одинарные кавычки.