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