comando fuente no encontrado en sh shell
Tengo un script que usa sh
shell. Recibo un error en la línea que usa el source
comando. Parece que source
no está incluido en mi sh
caparazón.
Si intento ejecutar explícitamente source
desde Shell obtengo:
sh: 1: source: not found
¿Debo instalar de alguna manera "fuente"? ¿ Tengo una versión incorrecta de sh
?
/bin/sh
suele ser algún otro shell que intenta imitar The Shell. Muchas distribuciones /bin/bash
lo utilizan sh
y lo admiten source
. Sin embargo, en Ubuntu /bin/dash
se utiliza el archivo que no es compatible source
. La mayoría de los shells usan .
en lugar de source
. Si no puede editar el script, intente cambiar el shell que lo ejecuta.
En Bourne shell(sh), utilice el archivo . comando para obtener un archivo
. filename
En ciertos sistemas operativos/entornos (Mac OS, Travis-CI, Ubuntu, al menos) esto debe ser:
. ./filename
(Crédito al comentario de Adrien Joly a continuación )
$ls -l `which sh`
/bin/sh -> dash
$sudo dpkg-reconfigure dash #Select "no" when you're asked
[...]
$ls -l `which sh`
/bin/sh -> bash
Entonces todo estará bien
El source
incorporado es un bashismo. Escribe esto simplemente como .
en su lugar.
p.ej
. $FILE
# OR you may need to use a relative path (such as in an `npm` script):
. ./$FILE
https://wiki.ubuntu.com/DashAsBinSh#source