심볼릭 링크를 따른 후 'cd ..'기능 복원


13

터미널에서 다음과 같은 명령으로 심볼릭 링크를 만들면

ln -s /path/to/some/directory symbolicLink

그런 다음 링크를 따라

cd symbolicLink

터미널 ~/symbolicLink/은 실제로 cwd가 보이고 있지만 ~/path/to/some/directory/( ~물론 링크가에서 만들어진 것으로 가정 함) 생각합니다 . 이것이 의미하는 것은 터미널을 '생각'하기 때문에 입력하면 cd ..다시로 이동 ~합니다. 이것은 cwd의 부모입니다.

나는 그러한 변경하려면 어떻게해야 cd ..대신에 데려다 것 ~/path/to/some/, 즉 실제 의 부모를 ~/path/to/some/directory/?

답변:



5

에 미묘한 경고가 있습니다 cd -P행동에 있습니다 (길이로 인해 답변으로 게시 됨).

$ dir1=$(mktemp --directory)
$ dir2=$(mktemp --directory)
$ ln -s -- "$dir1" /tmp/start
$ ln -s -- "$dir2" "$dir1"
$ cd "/tmp/start/"*
$ cd -P ..

무엇을해야합니까 pwd지금 인쇄 합니까? 논리적으로, 그것은

  1. $dir1, 경우는 cd -P ..않습니다cd ..cd -- "$(readlink -f)"이후, 또는
  2. /tmp, 경우는 cd -P ..않습니다cd -- "$(readlink -f)"cd ..이후.

실제로 후자 는 "부모"디렉토리보다 pwd직관적으로 2 단계 높음을 의미합니다 .


1
감사! cd -P여전히 내가 직면 한 문제를 해결하지만 여전히 유용합니다.
Val


2

나는 당신의 고통을 느낍니다 — bash이 행동으로 인해 대화식으로 사용하기 위해 기본적으로 망가 졌다고 생각 합니다.

tcsh대화식 사용을위한 훨씬 사용자 친화적 인 셸입니다. bash프로그래밍을 위해 떠나 십시오 (많은 스크립트 언어 중에서 더 나은 대안이있을 때 쉘 스크립트 작성을 고집하는 경우).

모든 사용자의 쉘을 변경하려면 chsh명령 행에 입력 하고 프롬프트를 따르십시오 (다시 사용 하지 않고 사용할 수 /bin/tcsh있는 우수한 O'Reilly 책 Using csh and tcsh ).


이 답변을 썼기 때문에 걱정을 멈추고 Bash를 대화 형으로 사용하는 것을 좋아했습니다. 그러나 여전히 cd심볼릭 링크 의 기본 동작을 처리 할 수 ​​없습니다 . 내가 넣어 기억해야 set -o physical내에서 .bashrc또는 .bash_profile모든 기계 I 사용을 위해.
dodgethesteamroller
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.