Невозможно запустить двоичный файл из папки bin

Как насчет:

cd /sourcemp4folder
for i in *.mp4
 do
 a=$(find /destination/ -iname "$i" -print | wc -l)
 if [[ $a > 0 ]]; then echo "Skip "
 else echo "cp $i to /destination/"
 fi
 done
-2
19.02.2018, 21:24
2 ответа

Si el binario no está en uno de los directorios enumerados en su variable PATH, entonces no podrá ejecutarlo sin especificar la ruta (una ruta relativa o absoluta ).

Dado que especificó./(el directorio actual ), y dado que el ejecutable estaba disponible en el directorio actual, el shell sabía dónde encontrarlo.

La forma correcta de resolver su problema si desea usar phpy los otros ejecutables en el mismo directorio, sin tener que especificar siempre la ruta, es agregar /usr/local/php/x64/7.2.2/binal valor de PATHen su ~/.bashrcexpediente:

PATH="$PATH:/usr/local/php/x64/7.2.2/bin"

La nueva ruta estará activa en todos los nuevos shells.

De esta manera, no tiene que sudorootear para agregar enlaces simbólicos en cualquier lugar que puedan confundir futuras instalaciones de software en su máquina.

4
28.01.2020, 05:14

Cuando escribes

php /ruta/a/unarchivo.php

luego bash (shell predeterminado de Linux )primero busca php en las rutas especificadas en la variable global $PATH. Cuando crea un enlace simbólico para php en /usr/local/bin, eso funciona porque /usr/local/bin está presente de manera predeterminada en $PATH en la mayoría de las variantes de Linux. Puedes comprobarlo por:

echo $PATH

Debería venir como:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

Lo mismo que está logrando cuando proporciona /usr/local/php/x64/7.2.2/bin en $PATH al revés.

Cuando escribes

./php /path/to/somefile.php

o

/usr/local/php/x64/7.2.2/bin/php /path/to/somefile.php

bash interpreta que está proporcionando la ruta al archivo php manualmente y no la busca en $PATH. Más bien, busca el archivo php en la ruta que especificó.

1
28.01.2020, 05:14

Теги

Похожие вопросы