このcd
コマンドはディレクトリの変更に使用されることを知っています。例えば
cd dirname
有効なディレクトリ名には、およびも含まれ.
ます..
。目的cd ..
は明らかです。マンページから:
CDPATHの空のディレクトリには、現在のディレクトリと同じ名前( ".")があります。
しかし、これの目的は何ですかcd .
?
ベストアンサー1
それがすることは、cd .
現在の作業ディレクトリに関する情報でシェルを更新することです。現在のディレクトリ(パス名)がcd
。
$ pwd
/tmp/shell-bash.OoVntBAM
$ mkdir dir
$ cd dir
$ pwd
/tmp/shell-bash.OoVntBAM/dir
したがって、現在私たちは下のどこかにある/tmp
ディレクトリにありますdir
。現在あるディレクトリの名前を変更します。
$ mv ../dir ../new-dir
では、今どこにいますか?
$ pwd
/tmp/shell-bash.OoVntBAM/dir
本当に?なぜ、それは変です。シェルが私たちが誰であるかを確かに知っておきましょう。
$ cd .
$ pwd
/tmp/shell-bash.OoVntBAM/new-dir
スクリプトでは、cd .
ユーザーが現在のディレクトリにまだアクセスできることをテストするために使用できます。
if ! cd . 2>/dev/null; then
echo lost access to cwd >&2
exit 1
fi
または逆に、確認する現在のユーザーのアクセス権をキャンセルする一部の操作の後、現在のディレクトリにアクセスできなくなります。
現在のディレクトリへのアクセス権が失われる理由には、ディレクトリの削除または誰かがディレクトリに対する実行権限を削除することが含まれます。
もう1つの例はieを使用しますcd .
が、-P
ieオプションを使用することですcd -P .
。現在のディレクトリがシンボリックリンクを介してアクセスされると、「物理」ディレクトリになります。
$ pwd
/tmp/shell-bash.OoVntBAM
$ mkdir dir
$ ln -s dir link-dir
$ ls -l
total 2
drwxr-xr-x 3 kk wheel 512 May 8 00:48 dir
lrwxr-xr-x 1 kk wheel 3 May 8 00:46 link-dir -> dir
これで、ディレクトリdir
とそのディレクトリへのシンボリックリンクが作成されました。シンボリックリンクを介してディレクトリに入ります。
$ cd link-dir
$ pwd
/tmp/shell-bash.OoVntBAM/link-dir
それから...
$ cd -P .
$ pwd
/tmp/shell-bash.OoVntBAM/dir