まず、それが~/
ホーム ディレクトリであることがわかります。CD を実行する~
か、~/
ホーム ディレクトリに移動します。
しかし、それはcd ~X
私を特別な場所に連れて行ってくれます。そこにはX
何でもあるようです。
bash では、「 」を押して Tab キーを押すと、やなどのcd ~
一連の~X
オプションが表示されます。これらのフォルダーに移動して を実行すると、これらのフォルダーがホーム ディレクトリ内になく、あちこちに分散していることがわかります。~mail
~postgres
~ssh
pwd
これらはエイリアスではありません。確認しました。これらはenv.
変数ではありません。そうでなければ、 が必要になります$
。
これらのリンクを設定するものは何ですか? また、これらが設定されている場所はどこで確認できますか?
ベストアンサー1
これは「チルダ展開「これは OS ではなくシェルの機能です。たとえば、csh では動作が異なります。」
情報がどこから来るのかという質問にお答えします。あなたのホームディレクトリは変数から取得されます$HOME
(そこに何を保存してもかまいません)。一方、他のユーザーのホームは、getpwent()
この機能は通常、NSSA; デフォルトでは から値が取得されます/etc/passwd
が、NIS、LDAP、SQL データベースなど、任意のソースを使用して情報を取得するように構成することもできます。
チルダ展開はホーム ディレクトリの検索以上のものです。要約すると次のようになります。
~ $HOME
~fred (freds home dir)
~+ $PWD (your current working directory)
~- $OLDPWD (your previous directory)
~1 `dirs +1`
~2 `dirs +2`
~-1 `dirs -1`
dirs
および~1
、などは、および~-1
と組み合わせて使用されます。pushd
popd
追加編集:
としてショーン・ブライトコメントで指摘されているように、ホームディレクトリに関する基本的なチルダの動作は、POSIX準拠シェル。さらに、単語表現()この動作を実装するために C API 関数が指定されています。ただし、当然ながら注意して使用してください。