Como executo meu shell script de qualquer lugar [closed]

1

Eu tenho um Ubuntu Studio 16.10 de 64 bits. Eu criei um script de shell xyz.sh o caminho para o arquivo é home / somefolder / test / xyz.sh Eu já adicionei

'chmod u+x xyz.sh' 

e eu corri o script

./xyz.sh

Foi bem sucedido.

No entanto, quando eu fiz um cd para ir ao meu diretório home e executei xyz.sh usando

 ./xyz.sh 

Recebi a mensagem bash: ./xyz.sh: Nenhum arquivo ou diretório desse tipo

Apesar de executar o seguinte:

PATH=$PATH:home/somefolder/test/xyz.sh
    
por beegee Assem 24.09.2017 / 15:06

2 respostas

4

Se você adicionou o caminho corretamente, basta chamar o nome do script, então xyz.sh em vez de usar ./xyz.sh

Usando ./ você está dizendo ao seu shell para procurar no diretório de trabalho atual, e execute xyz.sh a partir dali.

-

Nota lateral, você está perdendo um / desde o início do caminho do diretório, deve ser PATH=$PATH:/home/somefolder/test e você deve adicionar apenas o diretório, não o nome completo do executável.

    
por 24.09.2017 / 15:08
3

Indicar explicitamente um caminho para um executável fará com que o shell tente usar esse caminho para executar o executável.

Se estiver dizendo ./myscript e se myscript não estiver no diretório atual, você receberá um erro "não há arquivo ou diretório". Isso não não usa a variável $PATH .

O $PATH deve ser uma lista de diretórios (não arquivos) com : -delimited, na qual o shell procurará executáveis quando nenhum caminho for especificado na linha de comando. É um risco de segurança em potencial adicionar o diretório atual ( . ) à variável PATH (consulte " É seguro adicionar ao meu PATH? Como é que se passa? ").

Outra solução simples para quando você só quer ter acesso a um único executável fora do seu comum $PATH é usar um alias:

alias myscript=/path/to/myscript

(isso vai no seu arquivo de inicialização, provavelmente .bashrc para bash ).

Você deve especificar o caminho absoluto completo para o executável no alias.

    
por 24.09.2017 / 15:51