$> ls ../../../../..
나에게 같은 결과를주지 않습니다
$> cd ../../../../..
$> ls
왜? 링크할 게 있나요? 어떻게 되어가나요?
[ johanrj@jamin ] ~/XXX/broadcom/asuswrt/release/src-rt-6.x/linux/linux-2.6/drivers/net/phy/WRT/openwrt-git-8.09.2/package/swconfig/src
$> ls ../../../../..
9145-D5B0 asuswrt BCM53125 bcm_switch jrj Packages workspace
[ johanrj@jamin ] ~/XXX/broadcom/asuswrt/release/src-rt-6.x/linux/linux-2.6/drivers/net/phy/WRT/openwrt-git-8.09.2/package/swconfig/src
$> cd ../../../../..
[ johanrj@jamin ] ~/XXX/broadcom/asuswrt/release/src-rt-6.x/linux/linux-2.6/drivers/net/phy
$> ls
adm6996.c cicada.c libphy.ko lxt.c mdio-boardinfo.h mdio_bus.o phy_device.c smsc.c swconfig.mod.c WRT
adm6996.h davicom.c libphy.mod.c Makefile mdio_bus.c Module.symvers phy_device.o swconfig.c swconfig.mod.o
b53 fixed.c libphy.mod.o marvell.c mdio_bus.c.orig phy.c phy.o swconfig.ko swconfig.o
broadcom.c Kconfig libphy.o mdio-boardinfo.c mdio_bus.c.rej phy.c.orig qsemi.c swconfig_leds.c vitesse.c
답변1
예, 쉘은 지능적으로 심볼릭 링크 디렉토리로 변경하려고 시도합니다.
$ mkdir a
$ ln -s a b
$ cd b
$ pwd
/home/michas/b
$ pwd -P
/home/michas/a
심볼릭 링크로 변경한 후 b
쉘은 사용자가 실제로 "directory" 에 있는 것처럼 가장 b
하지만 심볼릭 링크는 사용자를 디렉토리로 보냅니다 a
.
바라보다 help pwd
:
-P print the physical directory, without any symbolic links
외부 명령(예: ls
)은 항상 물리적 경로를 사용하지만 셸 내장 기능은 기본적으로 가상 심볼릭 링크 경로를 사용합니다.
이 cd
명령은 쉘 내장 명령이며 기본적으로 cd ..
"물리적 상위 사용" 대신 "현재 기호 링크 유지"로 해석됩니다. 하지만 이 동작을 변경할 수 있습니다. help cd
설명하다:
-P use the physical directory structure without following symbolic
links: resolve symbolic links in DIR before processing instances
답변2
실제 경로를 얻고 구문 분석 링크를 사용하여 realpath
출력을 비교할 수 있습니다
realpath ../../../../..
cd ../../../../..
realpath .
내 시스템에서:
~/shared $ realpath ..
/home/avdndata/lnk
~/shared $ cd ..
~ $ realpath .
/home/anthon