내에서는 .profile
로그인 쉘이 실제로 Bash 인 경우 Bash 관련 별칭 및 함수가 소스인지 확인하기 위해 다음 코드를 사용합니다 .
# If the current (login) shell is Bash, then
if [ "${BASH_VERSION:-}" ]; then
# source ~/.bashrc if it exists.
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
현재 쉘 구성 파일, 스크립트 및 기능을 버전 제어하에 두는 중입니다. 또한 최근에 교체, 예를 들어, Bash 전용의 기능을 활용할 수없는 쉘 스크립트에서 캐주얼 Bashisms을 제거하는 과정을 시작했습니다 function funcname()
과를 funcname()
.
쉘 파일 저장소의 경우 저장소 의 각 파일 에서 Debian의 devscripts 패키지 에서 유틸리티 를 실행하는 커밋 사전 후크를 구성하여 실수로 Bash 특정 구문을 도입하지 않도록했습니다. 그러나 이것은 내 오류가 발생합니다 .checkbashisms
sh
.profile
possible bashism in .profile line 51 ($BASH_SOMETHING):
if [ "${BASH_VERSION:-}" ]; then
에 어떤 경고 메시지가 표시되지 않는지를 확인하는 방법이 있는지 궁금합니다 checkbashisms
.
나는 목록을 확인 POSIX으로 나열 쉘 관련 변수 중 하나가 현재 쉘을 표시하는 데 사용 수 있다는 희망을. 또한 대화식 Dash 셸에서 설정된 변수를 살펴 보았지만 다시 한 번 적합한 후보를 찾지 못했습니다.
현재로서는에 .profile
의해 처리되는 것을 제외 했습니다 checkbashisms
. 작은 파일이므로 수동으로 확인하기가 어렵지 않습니다. 그러나이 문제를 연구 한 결과 POSIX 호환 방법이 어떤 쉘이 실행 중인지 (또는 적어도 checkbashisms
실패 하지 않는 방법) 확인하는 방법을 알고 싶습니다 .
추가 배경 / 설명
쉘 구성 파일을 버전 제어로 설정하는 이유 중 하나는 현재 정기적으로 로그인하는 모든 시스템에서 환경을 구성하는 것입니다. Cygwin, Ubuntu 및 CentOS (5 및 7 모두 사용자 용 Active Directory 사용) 입증). X Windows / 데스크톱 환경과 원격 호스트의 SSH를 통해 가장 자주 로그온합니다. 그러나 나는 이것이 미래의 증거이며 가능한 한 시스템 종속성 및 기타 도구에 가장 의존하지 않기를 바랍니다.
내가 사용하고 checkbashisms
내 껍질 관련 파일의 구문에 대한 간단한 자동화 전성 검사한다. 그것은 완벽한 도구가 아닙니다. 예를 들어, command -v
스크립트에 사용하는 것에 대해 불평하지 않도록 패치를 이미 적용했습니다 . 조사하는 동안 프로그램의 실제 목적은 2008 년 (또는 2013 년 개정판)이 아닌 POSIX 2004를 기반으로하는 데비안 정책을 준수하는 것임을 알게되었습니다.
.bash_profile
그건 그렇고, 여기서 당신이하고있는 특정 일에 대해 .profile
(조건부) 소스를 작성하십시오 .bashrc
.