
이 글을 읽은 후 비대화형 쉘에서 몇 가지 별칭을 사용하고 싶습니다.이 게시물그리고이 게시물. 이것은 내 명령입니다:
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 변수를 찾고 해당 값이 있으면 확장한 다음 확장된 값을 파일 이름으로 사용하여 읽고 실행합니다.