때로는 $PROJECT_HOME/*
프로젝트의 모든 파일을 삭제하기 위해 사용합니다. 환경 변수 PROJECT_HOME
가 설정되어 있지 않으면 (내가 su
하고 새 사용자 에게이 환경 변수가 설정되어 있지 않기 때문에) 루트 폴더에서 모든 파일을 삭제하기 시작합니다. 이것은 종말입니다.
bash
쉘에서 정의되지 않은 환경 변수를 사용할 때 오류가 발생 하도록 구성 하려면 어떻게 해야합니까?
물론 vars를 빈 문자열로 초기화하지는 않습니다.
—
PSkocik 2016 년
[ -z "$VAR" ]
초기화되지 않은 상태 VAR
에서도 작동합니다 . 초기화는 바람직하지 않은 동작을 보여주기위한 것일뿐입니다. 내 요점은 vars가 빈 문자열로 초기화되고 어떤 식 으로든 rm -r "$PROJECT_HOME"/*
실수로 실행 set -u
하면 "apocalyptic"동작을 얻게됩니다. IHMO, 컴퓨터의 전체 내용을 보호하는 데있어 미안보다 안전합니다. set -u
안전하지 않습니다.
"매우 길다"? 위험한 작업을 수동으로 수행 하는 편리한 방법을 찾지 않아야 합니다. 대신, 원하는 것을 수행하는 함수, 별명 또는 스크립트를 작성해야합니다. 이 경우 @PSkocik의 제안 된 명령에서 별칭을 만드는 것이 안전 하고 편리합니다.
—
Kyle Strand
사용자가 설정하면 어떻게
—
Barmar
PROJECT_HOME=/etc
됩니까? 빈 값을 확인하는 것만으로는 대격변을 예방할 수 없습니다. 루트로 실행할 때 신뢰할 수없는 사용자의 변수를 사용해서는 안됩니다.
set -u
당신이 원하는 것을 할 것입니다.