el comando no se encuentra a través del script de shell pero funciona en la terminal

17

En mi archivo .sh no puedo invocar comandos ant o mv o cp, pero los mismos comandos se ejecutan en la terminal. A continuación está mi script

archivo sample.sh

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

ruta agregada en el archivo .bashrc.

export PATH=$PATH:/usr/bin/

cp, mv, ant solo funcionan bajo el terminal, no a través de scirpt.

usuario755
fuente
1
Danos más información sobre tu problema ...
Ruban Savvy
android/ ant, ¿están estos binarios en / usr / bin?
UVV

Respuestas:

13

Como su script es un script de shell ( /bin/sh), sus PATHentradas .bashrcno se leerán, ya que es para el shell interactivo bash( /bin/bash).

Para que sus PATHentradas estén disponibles para los /bin/shscripts ejecutados por un usuario específico, agregue la PATHentrada al .profilearchivo en el directorio de inicio de ese usuario.


Además, puede agregar la ruta completa para cada uno de sus comandos dentro del script:

/bin/cp filename.so filename_org.so

O establezca la PATHvariable que incluye todo lo requerido $PATHSal comienzo de su secuencia de comandos.

PATH=$PATH:/bin:/usr/bin:xxx
export PATH
geedoubleya
fuente
2
Análisis correcto, pero no mencionó la solución correcta, que es establecer PATHen el lugar adecuado en lugar de .bashrc. Cambiar el script para que sea un script bash no hará ninguna diferencia: .bashrcsolo se carga mediante shells interactivos.
Gilles 'SO- deja de ser malvado'
2

Tuve el mismo problema al ejecutar un binario cuya ruta se establece en bashrc.

Resolvió el problema haciendo lo siguiente:

Agregue el binario o agregue un enlace al binario en / usr / bin.

ln -s [path_to_binary] [name_of_executable] 

Luego verifique usando

ls -l

Puede eliminar el formulario de entrada bashrc.

Naba
fuente
0

puede hacer una cosa simple si tiene un script pequeño y termina su trabajo lo antes posible

vaya a la línea de comando use el comando debajo

which your_command 

el comando anterior imprimirá la salida, incluido el uso de ruta, ese comando

Vishal Kharade
fuente