Sotto% family shell di% co_de, avrai la tua shell funzionante con questo comando:
% echo $shell
Se csh è stato eseguito, direttamente o indirettamente, da una shell della famiglia Bourne che ha esportato la sua variabile SHELL, quest'ultimo essendo il caso comune, la variabile SHELL rimarrebbe invariata, quindi csh mostrerà ancora il suo valore precedente che sarebbe fonte di confusione.
Questo è quello che ti sta succedendo, uno dei processi parent della tua sessione echo $SHELL era tcsh . Se bash viene avviato con la variabile bash unset, imposta il percorso su SHELL , nonostante ciò che afferma la documentazione. Si noti che l'avvio di una nuova famiglia di shell Bourne non avrebbe cambiato la variabile SHELL se impostata. SHELL non è sicuramente il modo per identificare quale shell stai usando, solo per sapere quale shell è la tua shell predefinita quando si trova in un ambiente POSIX.
Un modo portatile per sapere quale shell è attualmente in esecuzione sarebbe:
ps -o comm= -p $$
Tuttavia, quest'ultimo comando presuppone che bash sia impostato sul PID di processo corrente, che sfortunatamente alcune shell esotiche come $$ break. Un modo ancora più portabile per risolvere questo problema è:
env sh -c 'basename $(ps -o comm= -p $(ps -o ppid= -p $$))'