Exemplo:
# echo $PATH
/home/admin*:*/bin
Presumo que seja algum tipo de curinga, mas tem um nível de profundidade ou muitos?
Por exemplo, */bin
corresponderá apenas aos itens em usr/bin
ou também aos itens mais profundos em usr/local/bin
and /home/admin/bin
? E vai /home/admin*
combinar /home/administrator
e tudo o que está abaixo dele, também em vários níveis?
Responder1
O que significa asterisco (*) em um $PATH unix?
# echo $PATH
/home/admin*:*/bin
Isso significa que você tem um arquivo $PATH
.
$PATH
não suporta curingas.
Responder2
Esseoutra respostaafirma que o seu $PATH
é inválido, mas discordo.
Isso porque, pelo bash
menos, ele não causará nenhum erro - seja quando você o configura ou quando o shell tenta resolver um comando via $PATH.
Em $PATH, um asterisco significa umliteral *
(asterisco).
Ou seja, existeNÃOa expansão curinga foi executada e, na verdade, está verificando o literal directory /home/admin*
, que não existe, então ele o ignora e verifica */bin
, que também é ignorado de forma semelhante.
Vocêpodecrie diretórios com um literal *
neles (mas... mas...por que?).
E, se feito, entãovaiolhe ali; por exemplo, no '*/bin'
caminho
Então, isso realmente funcionaria com o valor $PATH fornecido:
cd /
mkdir \*
mkdir \*/bin
echo 'echo Hello from \"star\"/bin' > \*/bin/asterisk.bash
chmod 744 \*/bin/asterisk.bash
asterisk.bash
(Se você quiser experimentar em um diretório local em vez de root, apenas não cd
entre /
)
(Nãoque eu recomendo fazer isso em casa. Faça na casa de um amigo :-)
Mas já que você provavelmente fez isso de qualquer maneira - bem, para se livrar do ridículo, os três comandos a seguir devem resolver.
(Obs.: eu sounãousando rm -r
apenas no caso de algo ser digitado incorretamente ou o shell em que você está interpretando as coisas de maneira diferente.)
rm \*/bin/asterisk.sh
rmdir \*/bin
rmdir \*