Ejemplo:
# echo $PATH
/home/admin*:*/bin
Supongo que es un comodín de algún tipo, pero ¿tiene un nivel de profundidad o muchos?
Por ejemplo, ¿ */bin
coincidirá solo con elementos de usr/bin
o también coincidirá con elementos más profundos de usr/local/bin
and /home/admin/bin
? ¿Y /home/admin*
coincidirá /home/administrator
todo lo que hay debajo, también en múltiples niveles?
Respuesta1
¿Qué significa el asterisco (*) en un $PATH de Unix?
# echo $PATH
/home/admin*:*/bin
Significa que tienes un inválido $PATH
.
$PATH
no admite comodines.
Respuesta2
Esteotra respuestadice que su $PATH
no es válido, pero no estoy de acuerdo.
Esto se debe a que, al bash
menos, no causará ningún error, ya sea cuando lo configure o cuando el shell intente resolver un comando a través de $PATH.
En $PATH, un asterisco significa unliteral *
(asterisco).
Es decir, hayNOSe realizó la expansión con comodines y en realidad está verificando el directorio literal /home/admin*
, que no existe, por lo que lo omite, y lo verifica */bin
, que también se ignora de manera similar.
Túpodercrear directorios con un literal *
en ellos (pero... pero...por qué?).
Y, si se hace, entoncesvoluntadmira allí; por ejemplo, en el '*/bin'
camino
Entonces, esto realmente funcionaría con el valor $PATH dado:
cd /
mkdir \*
mkdir \*/bin
echo 'echo Hello from \"star\"/bin' > \*/bin/asterisk.bash
chmod 744 \*/bin/asterisk.bash
asterisk.bash
(Si desea probarlo en un directorio local en lugar de en la raíz, simplemente no cd
lo haga /
)
(Noque recomiendo hacer esto en casa. Hazlo en casa de un amigo :-)
Pero como probablemente lo hiciste de todos modos, bueno, para deshacerte de la ridiculez, los siguientes tres comandos deberían hacerlo.
(NB: yo soynousando rm -r
en caso de que algo se escriba mal o el shell en el que estás interprete las cosas de manera diferente).
rm \*/bin/asterisk.sh
rmdir \*/bin
rmdir \*