bash
melacak jalur direktori logis saat ini, seperti yang ditunjukkan pada prompt Anda, dan menginterpretasikan hal-hal seperti cd ..
menurut itu. Ini membuat semuanya sedikit lebih konsisten jika Anda hanya menggunakan jalur seperti itu di cd
(atau pushd
), dengan mengorbankan hal-hal tak terduga yang terjadi jika Anda kemudian mengharapkan hal yang sama terjadi dengan jalur dalam argumen perintah (atau di dalam perintah; emacs
dan vim
memiliki aturan sendiri yang dapat dikonfigurasi untuk penanganan symlink, tetapi sebagian besar perintah bergantung pada kernel untuk menanganinya).
Menurut help cd
,
Options:
-L force symbolic links to be followed: resolve symbolic
links in DIR after processing instances of `..'
-P use the physical directory structure without following
symbolic links: resolve symbolic links in DIR before
processing instances of `..'
Dengan kata lain, -L
berarti menggunakan logis struktur, sedangkan -P
menggunakan yang sebenarnya fisik struktur direktori.
Struktur logisnya seperti ini,
$ tree a
a
└── b
└── symlink -> ..
Struktur fisik sebenarnya saat Anda membuka a/b/symlink
adalah,
a
Jika Anda ingin menggunakan nyata ..
, maka Anda juga harus menggunakan cd -P
:
The -P option says to use the physical directory
structure instead of following symbolic links (see
also the -P option to the set builtin command);
the -L option forces symbolic links to be followed.
Contohnya,
$ cd
$ cd a/b/symlink # physical location is at a/
$ cd .. # now is at a/b
$ cd symlink # goes back to a/b/symlink
$ cd -P .. # follow physical path (resolve all symlinks)
$ pwd -P # -P is optional here to show effect of cd ..
/home/sarnold
$