Execução de script de shell

Execução de script de shell

Eu tenho dois arquivos de script de shell com exatamente as mesmas permissões, etc. Posso executar um deles apenas fornecendo seu nome na linha de comando, mas para o outro devo usar sh ou ./ para executá-lo. Qual é a razão?

Responder1

As probabilidades são de que os 2 scripts estejam em diretórios diferentes. Um dos diretórios está no PATH enquanto o outro não.

Você pode usar o typecomando para testar se um arquivo está presente no $PATH do seu shell atual.

$ type start_dropbox.bash
start_dropbox.bash is /home/saml/bin/start_dropbox.bash

Veja estas perguntas e respostas sobre U&L "Como faço para testar se existe um aplicativo em $PATH?" para uma cobertura mais completa.

Responder2

Se você está apenas dando o nome do script e ele funciona, então você o tem em /usr/bin/ /usr/sbin ou qualquer outra coisa. Tudo depende de como o seu caminho está definido.

Fazem isto:

1. echo $PATH

Se o seu script estiver em algum desses diretórios, ele será executado sem usar o caminho absoluto.

2. whereis "scripts name"

Whereis ou "qual" lhe dirá onde está localizado. Você pode até ter concedido direitos de execução a um arquivo e não ao outro. Para aquele que não roda apenas com o nome faça um chmod u+x

  1. Você pode precisar adicionar #!/usr/bin/env python se for um script python ou #!/usr/bin/env bash se for bash e assim por diante.

informação relacionada