Você fornecerá a saída disso (no diretório em que o abc.sh reside):
$ type ./abc.sh
$ ./abc.sh
O comando type
primeiro verificará se o seu ./abc.sh está localizado. Se não estiver, sairá dizendo que não é possível encontrar o arquivo ./abc.sh
. Então teríamos que descobrir o que é o nome do arquivo que não pode ser encontrado.
Além disso, qual é o nome do editor que você está usando para criar seu arquivo de script. Se você inadvertidamente usou uma edição do Windows (através do wine) isso pode causar problemas com os terminadores de linha no seu script.
Tente usar e editar como nano
ou gedit
. Você pode usar um desses editores recomendados e criar o mesmo arquivo de exemplo que, abc1.sh
e garantir que você tenha as linhas exatamente como elas são na sua pergunta editada.
A propósito, a única maneira de reproduzir a mensagem de erro que você deu em sua pergunta é omitindo a parte abc
do arquivo abc.sh
.
Esses comandos produzirão o erro da sua mensagem:
$ ./.sh
$ sudo .sh
Tenha em mente que cada erro é único e importante no diagnóstico do problema. É importante testar e expor o script e fornecer a mensagem de erro exata.
Por exemplo, um erro permission denied
pode ser causado ao tentar executar um arquivo que não tenha o bit de execução definido. Isso pode ser definido executando o comando que você referencia em sua pergunta:
$ chmod 777 abc.sh
Você também pode obter o erro permission denied
tentando executar um arquivo que pertença a root
e não tenha o conjunto de bits do mundo ou do grupo para leitura. Isso pode ser um efeito colateral de usar sudo
em seu espaço pessoal quando não for necessário. O chmod 777
que você mencionou na sua pergunta também resolveria o problema dando permissão de leitura e execução a todos os usuários.
Se você criou o arquivo de forma que ele seja de propriedade root, você terá que usar o comando elevated para alterar as propriedades. Isso lhe dará acesso para executar o arquivo:
$ sudo chmod 777 abc.sh
Se você tiver um motivo para controlar quem pode executar ou acessar o script, dê uma olhada em algumas das outras opções de chmod
:
$ man chmod
Como sugerido nos comentários da sua pergunta, você não deve usar o comando elevado sudo
para executar os scripts que está testando. Se o teste estiver no seu espaço pessoal, você pode fazer com que as áreas do seu espaço pessoal sejam de propriedade da raiz ... perder o acesso pessoal a essas áreas. Alguns scripts mal formados também podem causar corrupção em outros arquivos do sistema operacional. O erro de digitação de sua tentativa de executar o script abc.sh
é um exemplo de que erros podem acontecer. Se você decidiu remover seu script ou diretório de trabalho de script e erroneamente teve um espaço no lugar errado, isso pode causar sérios problemas onde você menos espera.