comando não encontrado via shell script, mas funciona no terminal

17

No meu arquivo .sh, não posso invocar comandos ant ou mv ou cp, mas os mesmos comandos são executados no terminal.below é o meu script

arquivo sample.sh

#! /bin/sh
cp filename.so filename_org.so
android update project -p .
ant clean
ant release

caminho adicionado no arquivo .bashrc.

export PATH=$PATH:/usr/bin/

cp, mv, ant estão funcionando apenas no terminal e não via scirpt.

user755
fonte
1
Dê-nos mais informações sobre yur problema ..
Ruban Savvy
android/ ant, esses binários estão em / usr / bin?
UVV

Respostas:

13

Como seu script é um shell script ( /bin/sh), suas PATHentradas no .bashrcnão serão lidas como no shell interativo bash( /bin/bash).

Para disponibilizar suas PATHentradas para /bin/shscripts executados por um usuário específico, adicione a PATHentrada ao .profilearquivo no diretório inicial desse usuário.


Além disso, você pode adicionar o caminho completo para cada um dos seus comandos no script:

/bin/cp filename.so filename_org.so

Ou defina a PATHvariável, incluindo todas as necessárias $PATHSno início do seu script.

PATH=$PATH:/bin:/usr/bin:xxx
export PATH
geedoubleya
fonte
2
Análise correta, mas você não mencionou a solução certa, que deve ser colocada PATHno lugar apropriado em vez de .bashrc. Alterar o script para ser um script bash não fará nenhuma diferença: .bashrcé carregado apenas por shells interativos.
Gilles 'SO- stop be evil'
2

Teve o mesmo problema ao executar um binário cujo caminho está definido no bashrc.

Resolva o problema da seguinte maneira:

Adicione o binário ou adicione um link ao binário em / usr / bin.

ln -s [path_to_binary] [name_of_executable] 

Em seguida, verifique usando

ls -l

Você pode remover o formulário de entrada bashrc.

Naba
fonte
0

você pode fazer uma coisa simples se tiver um script pequeno e terminar o seu trabalho o mais rápido possível

vá na linha de comando use o comando abaixo

which your_command 

O comando acima imprimirá a saída, incluindo o caminho, use esse comando

Vishal Kharade
fonte