Unix PATH 環境変数のアスタリスク「*」はどういう意味ですか?

Unix PATH 環境変数のアスタリスク「*」はどういう意味ですか?

例:

# 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 \*

関連情報