Executando scripts de outro diretório

4

Muitas vezes, o script que eu quero executar não está localizado no meu diretório de trabalho atual e eu realmente não quero deixá-lo.

É uma boa prática executar scripts (BASH, Perl, etc.) de outro diretório? Eles costumam encontrar todas as coisas que precisam para funcionar corretamente?

Se sim, qual é a melhor maneira de executar um script "distante"? É

. /path/to/script

ou

sh /path/to/script

e como usar sudo nesses casos? Isso, por exemplo, não funciona:

sudo . /path/to/script
    
por Desmond Hume 24.11.2012 / 23:36

2 respostas

6

Você pode chamar seu script usando apenas o caminho inteiro, sem o ponto . :

/path/to/script

sudo também funciona bem:

sudo /path/to/script

Will they usually find all the stuff they need to run properly?

Você quer dizer, "meu script encontrará os arquivos que estão na mesma pasta?" Isso depende do seu código. Por exemplo, se você tiver o script /tmp/test.sh :

#!/bin/bash
ls

Se você invocá-lo na sua pasta pessoal, ele executará ls em sua casa:

test@ubuntu:~:/tmp/test.sh
Desktop     Dropbox         Imagens  NetBeansProjects     Público     
Documentos  Modelos    R          Vídeos

Nesta situação, dirname é seu aliado:

#!/bin/bash
current=$(dirname $0)
ls $current

Executando-o na sua pasta pessoal, ele fornece:

test@ubuntu:~:/tmp/test.sh
acroread_1000_1000     hiRF7yLSOD              pulse-2L9K88eMlGn7   
unity_support_test.0    clementine-art-jt5332.jpg

qual é o conteúdo da minha pasta /tmp/ .

    
por Yamaneko 25.11.2012 / 00:04
3

A prática comum do * nix para scripts de usuários é colocá-los em seu diretório bin. Dessa forma, o script será procurado por padrão quando você digitar o nome na linha de comando.

Seu diretório bin (binário) deve estar em sua pasta pessoal para que o caminho completo seja /home/yourusername/bin . (Obviamente, altere yourusername para o seu nome de login.)

O diretório bin deve ter as seguintes permissões se você executar ls -lh do terminal: drwxr-xr-x

Por padrão, quando você cria um diretório com o terminal, tem as seguintes permissões definidas: drwxrwxr-x

A única coisa que você precisa mudar é a permissão do grupo, mas eu vou orientá-lo em cada etapa do terminal (supondo que você ainda não tenha um bin):

  • Abra um terminal ([Ctrl] + [Alt] + t)

  • Crie o diretório binário: mkdir bin

  • Agora, use a GUI ou a CLI para copiar seus scripts para /bin .

  • Agora temos que alterar algumas permissões para que tudo seja configurado corretamente:

  • chmod -R 755 bin

  • Isso define o proprietário (você) para ler, escrever e executar, grupos e outros para ler e executar os scripts. O -R significa recursivo ou definido as permissões para todos os arquivos no diretório também.

Para obter mais ajuda sobre as permissões de arquivos, consulte este .

Agora, você pode digitar myscript para executar seus scripts - você não precisa estar no diretório. Você não precisa do. / ou qualquer coisa!

Para o sudo, é um pouco diferente, pois você terá que definir o caminho completo para o arquivo de script.

    
por Phantomgraph 25.11.2012 / 00:42