polecenie nie zostało znalezione przez skrypt powłoki, ale działa na terminalu


18

W moim pliku .sh nie mogę wywoływać komend ant, mv ani cp, ale te same komendy są wykonywane na terminalu. Poniżej mój skrypt

plik sample.sh

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

ścieżka dodana w pliku .bashrc.

export PATH=$PATH:/usr/bin/

cp, mv, ant działają tylko pod terminalem, nie poprzez scirpt.


1
Daj nam więcej informacji o swoim problemie.
Ruban Savvy

android/ ant, czy te pliki binarne znajdują się w katalogu / usr / bin?
UVV

Odpowiedzi:


13

Ponieważ skrypt jest skryptem powłoki ( /bin/sh), PATHwpisy w nim .bashrcnie będą odczytywane tak, jak w przypadku powłoki interaktywnej bash( /bin/bash).

Aby udostępnić PATHwpisy /bin/shskryptom uruchamianym przez określonego użytkownika, dodaj PATHwpis do .profilepliku w katalogu osobistym tego użytkownika.


Dodatkowo możesz dodać pełną ścieżkę do każdego polecenia w skrypcie:

/bin/cp filename.so filename_org.so

Lub ustaw PATHzmienną zawierającą wszystkie wymagane $PATHSna początku skryptu.

PATH=$PATH:/bin:/usr/bin:xxx
export PATH

2
Prawidłowa analiza, ale nie wspomniałeś o właściwym rozwiązaniu, które należy ustawić PATHw odpowiednim miejscu zamiast .bashrc. Zmiana skryptu na skrypt bash nie robi żadnej różnicy: .bashrcjest ładowany tylko przez interaktywne powłoki.
Gilles „SO- przestań być zły”

2

Miał ten sam problem podczas uruchamiania pliku binarnego, którego ścieżka jest ustawiona w bashrc.

Rozwiązano problem, wykonując następujące czynności:

Dodaj plik binarny lub dodaj link do pliku binarnego w / usr / bin.

ln -s [path_to_binary] [name_of_executable] 

Następnie sprawdź za pomocą

ls -l

Możesz usunąć formularz zgłoszeniowy bashrc.


0

możesz zrobić jedną prostą rzecz, jeśli masz mały skrypt i zakończyć pracę jak najszybciej

przejdź do wiersza poleceń użyj poniżej polecenia

which your_command 

powyższe polecenie wyświetli dane wyjściowe, w tym ścieżkę, użyj polecenia bezpośrednio

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.