Um usuário criou um arquivo chamado “script.sh” no seu “home...
$ cd
$ ls -l script.sh -rwxr-xr-x 1 user user 11 Oct 03 18:31 script.sh
$ script.sh script.sh: command not found
Com base nos comandos apresentados pelo usuário, qual seria uma forma de executar o script.sh sem erros?
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: D - ./script.sh
Para resolver essa questão, é necessário compreender alguns aspectos dos sistemas operacionais Unix-like, como o Linux, particularmente em relação à execução de scripts e ao gerenciamento de permissões de arquivos. A mensagem de erro "command not found" sugere que o shell (o interpretador de comandos do Linux) não consegue localizar o script para executá-lo.
Quando tentamos executar um script ou comando no Linux, o sistema procura por ele em todos os diretórios listados na variável de ambiente PATH
. Se o script estiver em um diretório que não está incluído na variável PATH
, o sistema não será capaz de executá-lo a menos que seja fornecido o caminho completo ou relativo até ele.
Por que a alternativa D está correta? Usar o comando ./script.sh indica ao sistema que o arquivo script.sh está no diretório atual (indicado pelo ponto .
), e que desejamos executá-lo. As permissões mostradas no comando ls -l
(-rwxr-xr-x
) confirmam que o usuário tem permissão de execução (x) nesse script. Assim, ao preceder o nome do arquivo com ./
, estamos indicando o caminho relativo do mesmo, o que permite que o shell o encontre e o execute corretamente.
As demais alternativas estão incorretas porque não especificam corretamente o caminho para a execução do script ou usam sintaxe que não corresponde ao esperado pelo shell para a execução de um arquivo. Por exemplo, a alternativa B (./.script.sh
) adiciona um ponto extra que não faz sentido na estrutura do caminho do arquivo.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
O comando chmod + x/diretorio/meu-script.sh somente altera as permissões do script para torná-lo executável, mas é necessário usar o comando ./meu-script.sh para, de fato, executá-lo. Desta forma a letra D é a questão correta.
Na letra A vemos que ele da permissão a todos para executar
porem no comando do chmod da questao, o mesmo ja da propriedades de execucao para todos os usuarios
o mesmo só faltou informar o diretorio do arquivo utilizando o ./
GAB D
Uma vez que esse script.sh não consta no PATH, para que a execução ocorra ele precisa especificar o caminho completo ou relativo do script.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo