例:
# echo $PATH
/home/admin*:*/bin
これは何らかのワイルドカードだと思いますが、深さは 1 レベルですか、それとも複数レベルですか?
たとえば、は*/bin
内の項目のみに一致しますusr/bin
か、それとも 内のより深い項目にも一致しますかusr/local/bin
and /home/admin/bin
? また、 とその下のすべての項目/home/admin*
に一致しますか/home/administrator
、また複数のレベルにも一致しますか?
答え1
Unix $PATH のアスタリスク (*) はどういう意味ですか?
# echo $PATH
/home/admin*:*/bin
無効な があることを意味します$PATH
。
$PATH
ワイルドカードはサポートされていません。
答え2
これその他の回答あなたのは$PATH
無効であると述べていますが、私は同意しません。
これは、少なくともbash
、これを設定したとき、またはシェルが $PATH 経由でコマンドを解決しようとしたときにエラーが発生しないためです。
$PATHでは、アスタリスクはリテラル *
(アスタリスク)。
つまり、いいえワイルドカードの展開が実行され、実際にはリテラル ディレクトリ がチェックされますが/home/admin*
、これは存在しないためスキップされ、 がチェックされますが*/bin
、これも同様に無視されます。
あなたできるリテラルを含むディレクトリを作成します*
(ただし...ただし...)なぜ?)。
そして、もしそれが完了すれば、意思そこを見る;例えば、'*/bin'
道の
したがって、これは実際には指定された $PATH 値で機能します。
cd /
mkdir \*
mkdir \*/bin
echo 'echo Hello from \"star\"/bin' > \*/bin/asterisk.bash
chmod 744 \*/bin/asterisk.bash
asterisk.bash
(ルートではなくローカルディレクトリで試したい場合は、 にしないでcd
ください/
)
(ないこれを自宅で行うことをお勧めします。友達の家でやってみてください :-)
しかし、おそらくあなたはそれをやったでしょうから、まあ、ばかげたことを取り除くために、次の3つのコマンドを実行する必要があります。
(注:私はないrm -r
万が一、入力ミスがあったり、使用しているシェルが違った解釈をしたりした場合に備えて、使用してください。
rm \*/bin/asterisk.sh
rmdir \*/bin
rmdir \*