comando non trovato tramite script shell ma funziona sul terminale


17

Nel mio file .sh non posso invocare i comandi ant o mv o cp ma gli stessi comandi vengono eseguiti su terminal.below è il mio script

file sample.sh

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

percorso aggiunto nel file .bashrc.

export PATH=$PATH:/usr/bin/

cp, mv, ant funzionano solo sotto il terminale e non tramite scirpt.


1
Dacci maggiori informazioni sul tuo problema ..
Ruban Savvy

android/ ant, questi binari sono in / usr / bin?
UVV

Risposte:


13

Poiché lo script è uno script di shell ( /bin/sh), le PATHvoci in .bashrcnon verranno lette come per la shell interattiva bash( /bin/bash).

Per rendere le PATHvoci disponibili per gli /bin/shscript eseguiti da un utente specifico, aggiungere la PATHvoce al .profilefile nella home directory dell'utente.


Inoltre, è possibile aggiungere il percorso completo per ciascuno dei comandi all'interno dello script:

/bin/cp filename.so filename_org.so

Oppure imposta la PATHvariabile includendo tutto il necessario $PATHSall'inizio del tuo script.

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

2
Analisi corretta, ma non hai menzionato la soluzione giusta, che è quella di posizionarsi PATHnel posto giusto anziché .bashrc. Cambiare lo script in uno script bash non farà alcuna differenza: .bashrcviene caricato solo da shell interattive.
Gilles 'SO- smetti di essere malvagio' il

2

Ha avuto lo stesso problema durante l'esecuzione di un binario il cui percorso è impostato in bashrc.

Risolto il problema procedendo come segue:

Aggiungi il binario o aggiungi un link al binario in / usr / bin.

ln -s [path_to_binary] [name_of_executable] 

Quindi controlla usando

ls -l

È possibile rimuovere il modulo di iscrizione bashrc.


0

puoi fare una cosa semplice se hai un piccolo script e finisci il tuo lavoro al più presto

vai sulla riga di comando usa sotto il comando

which your_command 

sopra il comando stamperà l'output incluso il percorso usa quel comando direttamente

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.