Você está comparando dois campos diferentes.
Observe as linhas de cabeçalho. Aquele com os traços tem COMMAND , enquanto aquele com tcsh tem CMD . Veja a seção Especificadores de formato padrão do man 1 ps página man.
Essencialmente:
-
cmd(CMD) é o comando com todos os seus argumentos como uma string. -
comm(COMMAND) é o nome do executável que o processo está executando.
No Linux, o último também pode ser definido usando prctl(PR_SET_NAME, string) para todo o processo e com pthread_setname_np(thread, string) para um encadeamento individual. string está limitado a 16 caracteres.
Os shells rotineiramente definem seu nome com base no symlink ou no modo em que foram executados, para que a lista de processos pareça logicamente correta. Em particular, iniciar o nome com um traço (como em -tcsh ) é usado para indicar um shell login .
No caso do OP, existem três shells executando o binário tcsh shell, todos os três como shells de login , mas um deles está no modo csh .
Um shell de login é apenas um shell em um certo modo interativo; o shell se comportando de maneira ligeiramente diferente de um que diz executar um script. Considere-o um modo que tem sinos e assobios para tornar o uso de shell mais fácil para os humanos, que os scripts não precisam.
O OP quase certamente tem csh alias para tcsh , e os três shells foram iniciados usando tcsh -l , csh -l e bin/tcsh -l , respectivamente. Para descobrir qual binário real um comando inicia, use realpath $(which command) .