bash 별칭을 디렉터리에 로컬로 설정할 수 있나요?
다음과 같은 디렉토리 구조가 주어졌을 때:
dir1/
- .
- ..
- dir2/
- file
cd dir1
별칭이 eg
작동 하지 않으면 cd dir1/dir2/
해당 별칭이 작동합니다. alsias의 정의는 또한 지역적이어야 하며 다음에 거주해야 합니다.dir1/dir2/
사용 사례: 나는 내 프로젝트에 다양한 도구를 사용하는 프로그래머입니다. 그 중 일부에 대한 별칭을 만들고 싶지만 대부분은프로젝트/디렉토리특정한.
이를 수행하는 bash 명령을 본 적이 있지만 al
내 Ubuntu(14.04)에는 없습니다.
답변1
예. 가장 간단한 접근 방식은 별칭이 각 디렉터리에 정의된 파일을 갖는 것입니다. 예를 들면 다음과 같습니다.
$ cat dir1/.alias
alias eg='echo "this is dir1"'
$ cat dir2/.alias
alias eg='echo "this is dir2"'
위의 예에서 각 디렉터리에는 별칭이 정의된 파일이 포함되어 .alias
있습니다 eg
. 이제 cd
그 중 하나로,원천파일과 별칭을 사용할 수 있게 됩니다.
$ cd dir1 && source .alias
$ eg
This is dir1
$ cd ../dir2 && source .alias
$ eg
This is dir2
이 작업을 자동으로 수행하려면 다음 줄을 다음 줄에 추가하세요 ~/.bashrc
.
## Check if an '.alias' file exists and, if it does, source it.
PROMPT_COMMAND='[ -e .alias ] && source .alias'
변수 PROMPT_COMMAND
는 각 프롬프트가 표시되기 전, 즉 명령을 실행한 후에 실행되는 명령을 정의합니다. 즉, .alias
파일이 포함된 디렉터리로 이동하자마자 해당 파일이 소스로 제공됩니다.
노트
이것은 안전하지 않습니다. 파일 내의 모든 코드가
.alias
실행됩니다. 자신의 책임하에 사용하십시오. 수동 접근 방식이 훨씬 안전합니다.파일 에 정의된 별칭은
.alias
디렉터리를 떠난 후에도 동일한 이름을 가진 다른 별칭 정의로 덮어쓰기 전까지 계속 사용할 수 있습니다. 이것이 문제인 경우 모든 별칭을 지우고 다음을 사용하여 전역 별칭을 다시 로드할 수 있습니다.unalias -a && . /etc/bash.bashrc && . ~/.bashrc && . ~/.bash_aliases
단순화하려면 다음 행을 다음 줄을 추가하여 함수로 만드세요
~/.bashrc
.clear_aliases(){ unalias -a && . /etc/bash.bashrc && . ~/.bashrc && . ~/.bash_aliases; }
clear_aliases
그런 다음 실행 하여 기본값을 재설정 할 수 있습니다 .