비대화형 셸에서 별칭을 확장하지 못했습니다.

비대화형 셸에서 별칭을 확장하지 못했습니다.

읽은 후 비대화형 셸에서 일부 별칭을 사용하고 싶습니다.이 게시물그리고이 게시물. 내 명령은 다음과 같습니다.

bash -O expand_aliases -c 'source ~/.bashrc; <some alias>'

그리고 여기 내 .bashrc:

 # Bash History
 HISTSIZE=1000
 HISTFILESIZE=2000
 # Colorful Prompt
 PS1='\[\033[01;34m\]\w\n\[\033[01;32m\]\u@\h\[\033[00m\] > '
 # Aliases
 alias ls='ls --color=auto -A -I NTUSER.\* -I ntuser.\*'
 alias echo='echo -e'
 alias docker='"/mnt/c/Program Files/Docker/Docker/resources/bin/docker.exe"'
 alias docker-compose='"/mnt/c/Program Files/Docker/Docker/resources/bin/docker-compose.exe"'

나는 echo뭔가를 삽입했고 .bashrc그것이 효과가 있다고 확신했지만 source ~/.bashrc별칭은 확장을 거부했습니다. 나는 또한 다음을 시도했습니다.

bash -O expand_aliases -c shopt

옵션이 expand_aliases켜짐으로 설정되어 있는지 확인하세요.

이 문제를 어떻게 해결합니까?

답변1

매우 간단한 해결 방법은 별칭 대신 함수를 사용하는 것입니다. 함수가 별칭보다 우수한 상황이 많이 있으며 그 반대가 사실인지는 알 수 없습니다.

 docker () { "/mnt/c/Program Files/Docker/Docker/resources/bin/docker.exe" "$@"; }
 docker-compose () { "/mnt/c/Program Files/Docker/Docker/resources/bin/docker-compose.exe" "$@"; }

ls(나는 귀하 와 가명을 이전하는 것을 거부했습니다 echo. 그들은 유익하기보다는 해로울 것 같습니다.)

답변2

.bashrc대화형 쉘에 대해서만 실행됩니다 .

이것이 제가 한 일입니다. .bash_env홈 디렉터리에 새 파일을 만듭니다 . 모든 별칭을 여기에 넣으세요. 예:

shopt -s expand_aliases
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias vi='vim'

그런 다음 이를 참조하십시오 .bash_profile(물론 거기에 실제 경로 이름을 입력하십시오).

 export BASH_ENV='/home/username/.bash_env'

(로그아웃 후 로그인하여 활성화하세요)


BASH_ENV맨페이지에서:

bash가 쉘 스크립트를 실행할 때 이 매개변수가 설정되면 해당 값은 ~/.bashrc에서와 같이 쉘을 초기화하는 명령이 포함된 파일 이름으로 해석됩니다.

그리고:

예를 들어 bash가 비대화형으로 시작되면 쉘 스크립트를 실행하기 위해 환경에서 BASH_ENV 변수를 찾고 해당 값이 나타나면 확장한 다음 확장된 값을 읽고 실행할 파일 이름으로 사용합니다. .

관련 정보