무섭 비활성 배쉬 쉘의 별명이 작동하지 않는 이유
-
06-07-2019 - |
문제
비 결과 활성 배쉬 쉘에서 별명을 사용하려고합니다. 내 별칭을 정의했습니다 ~/.bashrc
그리고 변수를 설정했습니다 BASH_ENV=~/startUpFile
. startupfile의 내용은입니다 source ~/.bashrc
.
실행할 때 내 별칭이 인식되는 것을 알 수 있습니다. alias
명령. 그러나 정의 된 별칭을 사용하려고하면 ~/.bashrc
, Bash는 그것을 인식 할 수 없습니다. 알 수없는 명령 오류를 제공합니다.
TCSH 쉘을 사용하면이 작업을 수행하기가 매우 쉽습니다. ~/.cshrc
파일은 항상 읽습니다.
Bash Shell 으로이 작업을 수행 할 수있는 방법이 있습니까?
해결책
명령 shopt -s expand_aliases
비 중 활성화 쉘에서 별명 확장을 허용합니다.
다른 팁
.bashrc
대화식 쉘에 의해서만 처리됩니다.
또한 쉘이 대화식이 아닌 경우 별명이 확장되지 않습니다. expand_aliases
쉘 옵션이 사용 설정됩니다 shopt
. 물론, POSIX 모드는 이름으로 쉘을 호출하여 호출되지 않는 한 sh
대신에 bash
.
별칭을 많이 사용하는 사람들은 종종 자신의 소스를 소스합니다 .bashrc
프로파일이 끝나면 별명이 비 중 활성화 쉘에도 있도록합니다. 이것이 가장 좋은 방법은 아니지만 꽤 일반적입니다.
21 세기에 우리는 파이썬과 같은 본격적인 언어를 선호하여 쉘 스크립트를 포기해야한다고 믿게합니다. 훨씬 더 예측 가능합니다.
당신은해야합니다
shopt -s expand_aliases
파일에서 당신의 BASH_ENV
나는 비슷한 문제가 있었는데 결국 ~/.bashrc가 필요한 전부라는 것을 알았습니다.
그러나 우분투에서는 처리를 중지하는 줄에 댓글을 달아야했습니다 ~/.bashrc :
If not running interactively, don't do anything
[ -z "$PS1" ] && return