Como executar o script em um diretório diferente?

51

Eu tentei isso

./home/user/scripts/someScript

mas não funciona

Não existe tal arquivo ou diretório

alguma ideia?

UAdapter
fonte
2
Obviamente, não existe esse arquivo ou diretório. Então você dá o caminho errado. O ponto não significa "executar". É apenas parte do caminho. No shell você normalmente digita ou arquivos a serem executadas ou comandos (que na verdade também são arquivos) :)
Pithikos
Livre-se desse período inicial e tente novamente. Como alternativa, ~ / scripts / someScript também funcionará. também mantenha `` qoutes em mente, e os programas exec ($ man exec)
j0h

Respostas:

61

O ponto inicial no seu comando significa "relativo ao diretório atual". Remova-o e ele se referirá a "o arquivo someScriptno diretório /home/user/scripts:

/home/user/scripts/someScript

Se você receber "Permissão negada", é porque você não tem permissões suficientes para acessar o arquivo no diretório de outros usuários ou porque o arquivo não é executável. Para torná-lo executável, execute:

chmod +x /home/user/scripts/someScript
Lekensteyn
fonte
35

Se o seu script precisar acessar recursos na mesma pasta em que está sendo executado e você o especificar como caminhos relativos, o script será interrompido.

Eu sempre adiciono um cd $(dirname $0)ao cabeçalho do meu script para que a pasta que contém o script seja a pasta raiz.

naisanza
fonte
6

Remova o .

Se você tornar o script executável chmod 755 <nameofscript>para executá-lo, precisará digitar apenas o caminho para o script.

Quando você vê ./scriptsendo usado, diz ao shell que o script está localizado no mesmo diretório que você está executando. Para usar o caminho completo, você digita sh /home/user/scripts/someScript.

Bruno Pereira
fonte
sh /path/to/fileé diferente de /path/to/file. shé executado /bin/shcom o link simbólico /bin/dash.
precisa saber é o seguinte
Apenas deixando claro os exemplos que você vê na rede, normalmente você vê sh ./somescriptquais também podem ser digitados como `sh / path / to / script / scriptitself '.
Bruno Pereira