programing

Linux bash에서 타일의 의미(홈 디렉토리가 아님)

telecom 2023. 5. 10. 20:14
반응형

Linux bash에서 타일의 의미(홈 디렉토리가 아님)

우선, 나는 그것을 압니다.~/홈 디렉토리입니다.CD 작성 대상~또는~/홈 디렉토리로 이동합니다.

하만지,cd ~X나를 특별한 장소로 데려갑니다, 그곳에서.X아무 것도 아닌 것 같습니다.

서에, 내를치면가▁"를 치면,cd ~그리고 탭을 누르면, 그것은 많은 가능성을 보여줍니다.~X과 같은 ~mail그리고.~postgres그리고.~ssh해당 폴더로 이동하여 다음 작업을 수행하는 중pwd폴더가 홈 디렉토리에 있지 않고 여기저기에 있다는 것을 보여줍니다.

별칭이 아닙니다.확인했습니다.그들은 아닙니다.env.변수, 그렇지 않으면 필요할 것입니다.$.

이러한 링크를 설정하는 이유는 무엇이며, 설정하는 위치는 어디입니까?

이것은 "타일드 확장"이라고 불리는 바시 기능입니다.그것은 OS가 아니라 셸의 기능입니다.예를 들어, csh를 사용하면 다른 동작을 하게 됩니다.

정보 출처에 대한 질문에 답하려면: 홈 디렉토리는 변수에서 가져옵니다.$HOME를 사용하여 다른 사용자의 홈을 실시간으로 검색할 수 있습니다.이 함수는 일반적으로 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등과함사니다용됩께다니▁used와 함께 됩니다.pushd그리고.popd.

추가할 편집 내용:

Sean Bright가 논평에서 지적했듯이 홈 디렉토리에 대한 기본 타일드 동작은 POSIX 호환 셸의 표준 동작으로 코드화되어 있습니다.또한 이 동작을 구현하기 위해 wordexp() C API 함수를 지정합니다.하지만, 분명히, 조심스럽게 사용하세요.

사용자의 홈 디렉토리입니다. ㅠㅠcd ~(your username)를 들면 를들면예면.

디까니입리렉토에 있는 의 홈 입니까?/etc/passwdpostgres, 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 -

그것은 다음과 같은 것을 의미합니다.~-.

Bash의 타일 확장:

http://bash-hackers.org/wiki/doku.php/syntax/expansion/tilde

사용 중인 경우autofs그러면 확장은 실제로 발생할 수 있습니다./etc/auto.home(또는 대리점의 경우 유사함).를 들어, 나의 를들어, 의나./etc/auto.master다음과 같은 모양:

/home2 auto.home --timeout 60

그리고./etc/auto.home다음과 같은 모양:

mgalgs -rw,noquota,intr space:/space/mgalgs

OpenDirectory/ActiveDirectory/LDAP 사용자가 홈 디렉토리에 "자동 마운트"되어 있을 수 있습니다.

*nix서에에서,~홈 디렉토리로 이동합니다.저도 마찬가지예요.~X X로 됩니다.'사용자 X'로 확인됩니다.

디렉토리 자동 마운트와 마찬가지로 OpenDirectory/ActiveDirectory/LDAP는 대규모/기업 환경에서 사용자 디렉토리를 자동 마운트하는 데 사용됩니다.이러한 사용자는 실제 사용자이거나 다양한 기능을 제공하기 위해 만들어진 기계 계정일 수 있습니다.

입력하면 컴퓨터에 있는 사용자 목록이 표시됩니다.

언급URL : https://stackoverflow.com/questions/998626/meaning-of-tilde-in-linux-bash-not-home-directory

반응형