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