테스트 조건 [
은 데비안 기반 배포판에 있는 프로그램입니다 /usr/bin/[
. 다른 조건 테스터 [[
도 프로그램인지 궁금합니다.
내가 묻는 이유는 sudo
특정 사용자에게 쉘 스크립트를 트리거할 수 있는 권한을 부여하기 때문입니다. 보안상의 이유로 이 스크립트에 사용된 각 프로그램( echo
to /bin/echo
및 [
to /usr/bin/[
)의 전체 경로를 추가하여 사용자가 PATH
자신의 프로그램을 사용하도록 변경할 수 없도록 했습니다. 이제 나도 변해야 하지 않을까 싶다 [[
.
답변1
man bash
예약어
예약어는 쉘에 특별한 의미를 갖는 단어입니다. 다음 단어는 따옴표가 없으면 예약어로 인식되며 간단한 명령(아래 SHELL GRAMMAR 참조)의 첫 번째 단어이거나 대소문자 또는 명령의 세 번째 단어입니다.! Case coproc do done elif else esac fi for function if in select then Until while { } time [[ ]]
[[
예약어의 경우에도 마찬가지이므로 외부 명령이 될 수 없습니다. 그러나 이러한 파일이 존재할 수도 있지만 전체 경로나 따옴표를 사용하여 호출해야 합니다.
[[
이러한 외부 명령이 존재하더라도 쉘 구문의 일부가 되면 다음 외부 명령이 이를 수행할 수 없을 때까지 구문 분석 규칙이 변경되므로 동일한 방식으로 작동하지 않습니다 ]]
.