Как насчет:
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
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 php
y los otros ejecutables en el mismo directorio, sin tener que especificar siempre la ruta, es agregar /usr/local/php/x64/7.2.2/bin
al valor de PATH
en su ~/.bashrc
expediente:
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 sudo
rootear para agregar enlaces simbólicos en cualquier lugar que puedan confundir futuras instalaciones de software en su máquina.
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ó.