Eu não descobri como fazer isso nativamente no shell (tcsh), mas resolvi o problema usando um script Perl.
Com um script Perl, você pode ter a lógica tão sofisticada quanto desejar para verificar se você possui o $ cwd, quais variáveis de ambiente estão definidas, etc. Em seguida, faça com que o script imprima a string de prompt desejada.
tcsh tem um alias especial precmd
que é executado toda vez antes de o prompt ser impresso. Então, ter um script Perl "formatPrompt.pl"
#!/home/utils/perl-5.8.8/bin/perl
use strict;
use warnings;
use Cwd;
# "SWDEV" is an env var special to our environment. Want to be reminded in the prompt of its setting.
use Env qw(SWDEV prompt);
my $prompt = '%U{%m}%~%u> ';
my $prefix = '';
if (defined $SWDEV) {
# set a prompt prefix if special env var is set. use "Boldface" highlighting.
$prefix = "%Bspecial env var SWDEV=$SWDEV%b\n";
}
if (! -o getcwd) {
# change the highlighting of the prompt if not your dir.
$prompt = '%U{%m}-->%~<--%u> ';
}
$prompt = $prefix . $prompt;
print $prompt;
exit 0;
e um alias definido como
% alias precmd
set prompt="'perl /home/source/perl/formatPrompt.pl'"
pode produzir
{o-xterm-62}~> setenv SWDEV "/some/special/env/var/value"
special env var SWDEV=/some/special/env/var/value
{o-xterm-62}~> cd /usr
special env var SWDEV=/some/special/env/var/value
{o-xterm-62}-->/usr<--> unsetenv SWDEV
{o-xterm-62}-->/usr<--> cd ~
{o-xterm-62}~>
(Observe que, se SWDEV for definido, seu valor será impresso e o cWd será circundado por - > cwd < - se o diretório não pertencer ao usuário. Tente outro realce de prompt, como% S% ~% s também.)