まず、~/
がホームディレクトリであることを知っています。 ~
または~/
にCDを送信すると、ホームディレクトリに移動します。
ただし、cd ~X
は特別な場所に連れて行ってくれます。X
は何でもあるようです。
Bashで「cd ~
」を押してタブを押すと、~X
および~mail
および~postgres
などの~ssh
オプションが表示されます。それらのフォルダーに移動してpwd
を実行すると、これらのフォルダーがホームディレクトリにないことがわかります。彼らはいたるところにいます。
それらはエイリアスではありません。確認しました。それらはenv.
変数ではないか、$
が必要です。
これらのリンクの設定とは何ですか。また、これらのリンクの設定場所はどこで確認できますか?
これは、「 チルダ展開 」というBash機能です。これは、OSではなくシェルの機能です。たとえば、cshではさまざまな動作が発生します。
情報の出所に関する質問に答えるには、ホームディレクトリは変数$HOME
(そこに何を格納しても)から取得しますが、他のユーザーのホームは getpwent()
を使用してリアルタイムに取得されます。この関数は通常 NSS ;によって制御されます。そのため、デフォルト値は/etc/passwd
から引き出されますが、NIS、LDAP、SQLデータベースなど、必要なソースを使用して情報を取得するように構成できます。
チルダの展開は、ホームディレクトリの検索以上のものです。概要は次のとおりです。
~ $HOME
~fred (freds home dir)
~+ $PWD (same effect as ./)
~- $OLDPWD (your previous directory)
~1 `dirs +1`
~2 `dirs +2`
~-1 `dirs -1`
dirs
および~1
、~-1
などは、pushd
およびpopd
と組み合わせて使用されます。
これらは、ユーザーのホームディレクトリです。たとえば、cd ~(your username)
を試してください。
それらは/etc/passwd
のユーザーのホームディレクトリですか? postgres、sendmail、Apacheなどのサービスは、通常のユーザーと同様にホームディレクトリを持つシステムユーザーを作成します。
これらはユーザーです。/etc/passwdを確認してください
cd〜ユーザー名
そのユーザーのホームディレクトリに移動します
私のマシンでは、物事をセットアップする方法のために、次のことを行います:
cd ~ # /work1/jleffler
cd ~jleffler # /u/jleffler
最初は、環境変数$HOME
の値に注意を払います。 $HOME
を意図的にNFSマウントファイルシステムではなくローカルファイルシステムに設定しました。 2番目はパスワードファイルから読み取り(おおよそ、NISは少し複雑になります)、パスワードファイルが私のホームディレクトリが/u/jleffler
であり、そのディレクトリに変更していることを発見します。
迷惑なのは、ほとんどのソフトウェアが上記のように動作することです(シェルのPOSIX仕様ではこの動作が必要です)。パスワードファイルからの情報を現在の$ HOMEの値として扱うソフトウェアを使用しています(使用することに関してあまり選択肢がありません)。これは間違っています。
これを質問に適用します-他の人が指摘したように、「cd ~x
」はユーザー「x」のホームディレクトリに移動し、より一般的には、チルダ展開が行われるたびに、~x
はユーザー「x」のホームディレクトリを意味します(そしてユーザー「x」が存在しない場合はエラーが発生します)。
それに言及する価値があるかもしれません:
cd ~- # Change to previous directory ($OLDPWD)
cd ~+ # Change to current directory ($PWD)
「~+
」の使用法をすぐに見つけることはできません。ただし、現在のディレクトリへのパスでシンボリックリンクを移動するという奇妙なことをしない限りです。
次のこともできます。
cd -
これは、~-
と同じことを意味します。
autofs
を使用している場合、展開は実際には/etc/auto.home
(または同様のディストリビューション)から行われている可能性があります。たとえば、私の/etc/auto.master
は次のようになります。
/home2 auto.home --timeout 60
および/etc/auto.home
は次のようになります。
mgalgs -rw,noquota,intr space:/space/mgalgs
OpenDirectory/ActiveDirectory/LDAPユーザーがホームディレクトリに「自動マウント」されている可能性があります。
* nixでは、~
はホームディレクトリに解決されます。同様に、~X
は 'user X'に解決されます。
ディレクトリの自動マウントと同様に、OpenDirectory/ActiveDirectory/LDAPは、大規模/企業環境でユーザーディレクトリを自動マウントするために使用されます。これらのユーザーは、実際のユーザーでも、さまざまな機能を提供するために作成されたマシンアカウントでもかまいません。
入力した場合 ~Tab マシン上のユーザーのリストが表示されます。