Execução do script shell

1

Eu tenho dois arquivos de script shell com exatamente as mesmas permissões, etc. Eu posso executar um deles apenas dando seu nome na linha de comando, mas para o outro eu deveria usar sh ou ./ para executá-lo. Qual é o motivo?

    
por coffeMug 25.04.2013 / 16:22

2 respostas

3

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

Você pode usar o comando type 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 este U & L Q & A " Como posso testar para ver se existe uma aplicação em $ PATH? " para uma cobertura mais completa.

    
por 25.04.2013 / 16:38
1

Se você está apenas dando o nome do script e ele funciona, você o tem em / usr / bin / / usr / sbin ou o que quer que seja. Tudo depende do que seu caminho está definido.

Faça isso:

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 "which" informarão onde ele está localizado. Você pode até ter dado um direito de execução de arquivo e não o outro. Para o que não funciona 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.
por 25.04.2013 / 17:21