Lança scripts de shell de qualquer lugar [duplicado]

7

É possível executar meus scripts localizados em ~/scripts de qualquer lugar?

Digamos que eu queira executar ./scriptname , independentemente do meu diretório de trabalho atual.

    
por mreq 19.06.2012 / 22:03

3 respostas

12

Você pode adicionar ~/scripts à sua variável de ambiente $PATH . Então você pode executar scriptname de qualquer lugar (mas não ./scriptname , porque o ./ indica o diretório atual).

Esta resposta mostra como adicionar ~/bin para $PATH , mas você pode fazer o mesmo com ~/scripts .

    
por elmicha 19.06.2012 / 22:10
15

Adicionar

 export PATH=$PATH:~/scripts

para o seu final do seu arquivo ~/.bashrc . Isso permitirá que você execute seus scripts em ~/scripts/ simplesmente digitando scriptname no bash. Você precisa fazer logout para que funcione na sua sessão (você pode testar os scripts abrindo um novo terminal).

Eu costumo adicionar

 export PATH=$PATH:~/bin

para o meu caminho e, em seguida, criar links simbólicos para os scripts de um programa que eu quero ter disponível na minha sessão.

cd ~/bin
ln -s ~/Tools/eclipse3.7/eclipse 
# which will create a symlink in ~/bin/ with the name eclipse
# pointing to ~/Tools/eclipse3.7/eclipse which allows me to execute
# the eclipse in ~/Tools/eclipse3.7/

Observe que os arquivos de caminho têm precedência. Se eu já tiver instalado o eclipse através do Ubuntu, ele primeiro pesquisará o eclipse em todos os outros locais do que em ~/bin/ . Se você quiser alterar esse comportamento, basta exportar o diretório ao contrário:

export PATH=~/bin:$PATH

Certifique-se de que os scripts em seu diretório de scripts sejam executáveis, caso contrário, a exportação não terá efeito.

Você pode ver os caminhos disponíveis digitando

echo $PATH

Se você quiser ver todas as variáveis de ambiente, digite env no seu console.

    
por Pascal 19.06.2012 / 22:14
2

Duas maneiras:

  • chame seus scripts de shell com um caminho completo em vez de ./ , como ~/scripts/scriptname
  • adicione a pasta que contém seus scripts de shell à variável de ambiente $PATH e chame seus scripts de shell sem o líder ./ , como scriptname
por Florian Diesch 19.06.2012 / 22:11