Um sinal de menos antes do nome do comando é uma convenção que os programas de login usam para iniciar os shells de login. Um programa de login é um programa em que você normalmente digita sua senha e inicia uma sessão para você, como login
, sudo -i
, su -
, sshd etc. Um shell de login é o shell inicial de uma sessão em modo texto .
cp foo bar
, isso executa o arquivo executável localizado em /bin/cp
(em sistemas típicos) e passa cp
como argumento 0, foo
como argumento 1 e bar
como argumento 2. A convenção normal é usar o nome base do executável como argumento 0. Quando um programa de login invoca um shell, ele viola essa convenção e coloca um hífen extra antes do nome do programa. Os shells entendem essa convenção alternativa e configuram as coisas apropriadamente para um shell de login, geralmente lendo um arquivo de inicialização como ~/.profile
, ~/.login
, ~/.bash_profile
, etc. dependendo do shell.
Veja também Diferença entre o Shell de Login e o Shell de Não Login