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)
.