[linux] Linux bash에서 물결표의 의미 (홈 디렉토리 아님)

우선, 이것이 ~/홈 디렉토리 라는 것을 알고 있습니다. CD를 사용 ~하거나 ~/홈 디렉토리로 이동합니다.

그러나, cd ~X나를 특별한 장소로 데려가는 X것 같습니다.

내가 “치면 배쉬에서, cd ~“와 히트 탭을, 가능한 한 무리의 표시 ~X와 같은 옵션 ~mail~postgres~ssh. 해당 폴더로 이동하여 a를 수행하면 pwd이 폴더가 홈 디렉토리에 없다는 것을 알 수 있습니다. 그들은 사방에 있습니다.

별칭이 아닙니다. 확인했습니다. env.변수 가 아니 거나 $.

이러한 링크를 설정하는 것은 무엇이며 설정되는 위치를 어디에서 찾을 수 있습니까?



답변

물결 확장 ” 이라는 Bash 기능 입니다. OS가 아닌 쉘의 기능입니다. 예를 들어 csh를 사용하면 다른 동작을 얻을 수 있습니다.

정보의 출처에 대한 질문에 답하기 위해 : 홈 디렉토리는 변수에서 가져 오며 $HOME(저장 한 내용에 관계없이) 다른 사용자의 집은 getpwent(). 이 기능은 일반적으로 NSS에 의해 제어됩니다 . 따라서 /etc/passwdNIS, LDAP 또는 SQL 데이터베이스와 같은 원하는 소스를 사용하여 정보를 검색하도록 구성 할 수 있지만 기본적으로 에서 가져옵니다.

물결표 확장은 홈 디렉토리 조회 이상입니다. 요약은 다음과 같습니다.

~              $HOME
~fred          (freds home dir)

~+             $PWD       (your current working directory)
~-             $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 ~username 해당 사용자의 홈 디렉토리로 이동합니다.


답변

내 컴퓨터에서 설정하는 방식 때문에 다음을 수행합니다.

cd ~             # /work1/jleffler
cd ~jleffler     # /u/jleffler

첫 번째는 환경 변수의 값에주의를 기울입니다 $HOME. 일부러 $HOMENFS 마운트 파일 시스템 대신 로컬 파일 시스템 으로 설정했습니다 . 두 번째는 암호 파일 (대략 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