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?


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

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.


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.