"적절한 쉘 매개변수 생성"을 통해 지정된 디렉토리 해시 테이블을 수정하는 방법은 무엇입니까?

"적절한 쉘 매개변수 생성"을 통해 지정된 디렉토리 해시 테이블을 수정하는 방법은 무엇입니까?

zsh나는 명명된 디렉토리 해시 테이블에 항목을 추가하기 위해 .s를 사용하는 데 익숙합니다 hash -d <name>=<value>. 최근 zshbuiltins(1)맨 페이지를 읽었 는데 다음과 같은 내용을 발견했습니다( hash내장 설명).

일반적으로 PATH(명령 해시의 경우)를 수정하거나 적절한 셸 인수(이름이 지정된 디렉터리 해시의 경우)를 생성하여 이러한 테이블을 수정할 수 있습니다.

by creating appropriate shell parameters이 메커니즘이 어떻게 작동하는지 이해하지 못합니다 . 누군가 나에게 예를 들어 줄 수 있습니까?

답변1

이것이름 디렉터리(사용자의 홈 디렉터리 제외)은 변수에 저장된 디렉터리로, 이 디렉터리를 사용하여 ~varname해당 디렉터리에 액세스한 다음 해시 테이블에 항목을 추가할 수 있습니다.

예:

$ var=/usr/local
$ hash -d
$ echo ~var
/usr/local
$ hash -d
var=/usr/local
$ : ~root
$ hash -d
root=/root
var=/usr/local

(저는 이 기능의 중요성을 스스로 이해한 적이 없습니다.)

세부 사항을 참조하십시오 ( 이 크기의 설명서는 info zsh 'static named directories'사용하지 않을 것입니다 ).man

답변2

이 기능의 요점은 여러 경로로 작업하고 디렉터리 트리의 한 분기에서 다른 분기로 지속적으로 변경하는 경우 매우 편리할 수 있다는 것입니다. 예를 들어, 두 개의 동일한 디렉토리 트리가 있는 경우(하나는 루트에 ~/home/src/project/devel, 다른 하나는 루트에) ~/home/src/project/production다음을 수행할 수 있습니다.

typeset -e dev=~/home/src/project/devel ; typeset -e prod=~/home/src/project/production ;

~devv.gr에 대한 인수로 경로를 사용하는 명령과 마찬가지로 or 를 편리하게 사용할 수 있습니다 ~prod.~~user

`cp -Rav ~dev/module ~/prod는 개발에서 프로덕션까지 모듈을 복사합니다. 자주 사용하는 공통 디렉토리에 대해 많은 입력을 수행할 수 있습니다. 동일한 디렉토리에 뿌리를 둘 필요는 없습니다. 이는 단순한 사용 사례일 뿐입니다.

참조를 위해 자주 액세스하는 깊게 중첩된 디렉토리의 이름을 지정하는 것이 매우 편리하다는 것을 알았습니다. 예를 들어 /use/local/lib/zsh/site-functions이것은 ~zfunc경로를 사용하는 모든 명령에 작동하므로 매우 강력한 지름길입니다.

관련 정보