Bash al(별칭 로컬) 기능을 찾을 수 없습니다.

Bash al(별칭 로컬) 기능을 찾을 수 없습니다.

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그런 다음 실행 하여 기본값을 재설정 할 수 있습니다 .

관련 정보