set쉘 내장 및 쉘 옵션 및 위치 매개 변수 설정 및 설정 해제에 사용됩니다.
인수 set가 없으면 현재 로케일로 정렬 된 모든 쉘 변수 (현재 세션의 변수 및 변수)를 인쇄합니다 .
bash 문서를 읽을 수도 있습니다 .
몇 가지주의 사항이 있습니다.
set "$var"에 var값을 할당 합니다 $1. 만약 $var시작과 함께 -또는 +다음 $var내용이 쉘 옵션의 순서로 처리 하였다. $var유효하지 않은 옵션이 있으면 대부분의 POSIX 쉘이 오류를 인쇄합니다. yash과 zsh에서 sh, ksh에뮬레이션은 오류를 인쇄 할뿐만 아니라, 유효한 옵션을 설정하지 않습니다. yash첫 번째 잘못된 옵션의 옵션 설정을 중지 하는 동안 zsh모든 옵션 이 할당됩니다. 에서 yash:
var=-fxd; set "$var"
f과 x에서 발표 할 예정이다 $-, 반면 :
var=fdx; set "$var"
에 f존재 $-합니다. 두 경우 모두, f그리고 x에 발표 할 예정 $-으로 zsh있는 sh및 ksh에뮬레이션.
이러한 상황으로부터 보호하기 위해 또는로 --시작하는 위치 매개 변수를 설정하는 첫 번째 인수로 전달할 수 있습니다 .-+
var=-fdx; set -- "$var"
콘텐츠에 관계없이에 할당 $var됩니다 $1.
set -- 추가 인수가 없으면 모든 위치 매개 변수가 설정 해제됩니다.
첫 번째 인수가 -인 경우 동작이 지정되지 않은 것입니다. 알려진 모든 POSIX 쉘은 설정을 해제 x하고 v옵션을 제외하고 (을 제외하고 posh) -위치 매개 변수 뒤에 다음 을 지정합니다 .
set -xv - -f
에 할당 -f됩니다 $1. set -또한 위치 매개 변수를 설정 해제하지 않았습니다. Schily osh 도 그렇게 행동합니다. 가보 sh 설정 v및 x옵션 이 없습니다 .
POSIX 쉘 예외는 첫 번째 위치 매개 변수로 yash취급 -됩니다.
$ yash -c 'set -xv - -f; printf "%s\n" "$@"; printf "%s\n" "$-"'
+ printf %s\n - -f
-
-f
+ printf %s\n cvx
cvx
Schily- 는 논쟁에 참여 한다면 아무것도하지 않을 것입니다 :
$ schily-sh -c 'set -v - -f; printf "%s\n" "$@"; printf "%s\n" "$-"'
<blank line>
s
$ schily-sh -c 'set -v -- -f; printf "%s\n" "$@"; printf "%s\n" "$-"'
-f
vs