읽은 후 비대화형 셸에서 일부 별칭을 사용하고 싶습니다.이 게시물그리고이 게시물. 내 명령은 다음과 같습니다.
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 변수를 찾고 해당 값이 나타나면 확장한 다음 확장된 값을 읽고 실행할 파일 이름으로 사용합니다. .