set
매개변수가 없는 명령은 무엇을 합니까?
보시다시피 env
명령과 마찬가지로 환경 변수가 알파벳 순서로 인쇄됩니다. 그리고 몇 가지 다른 정보(변수? 함수?)를 추가로 인쇄합니다. 예를 들면 다음과 같습니다.
__git_printf_supports_v=yes
__grub_script_check_program=grub-script-check
...
quote ()
{
local quoted=${1//\'/\'\\\'\'};
printf "'%s'" "$quoted"
}
quote_readline ()
{
local quoted;
_quote_readline_by_ref "$1" ret;
printf %s "$ret"
}
그것은 무엇이며 어디서 오는가?
set
매개변수가 없으면 명령에 대한 정보를 찾을 수 없습니다 . 실제로 내 Linux 배포판에는 man
페이지가 전혀 없습니다.set
답변1
set
환경 변수뿐만 아니라 목록 끝에 표시되는 쉘 함수까지 모든 쉘 변수를 표시하는 쉘 내장입니다.
변수는 행을 실행하거나 가져올 때 설정할 수 있는 구문으로 표시됩니다.
~에서bash
매뉴얼 페이지:
옵션이나 인수가 제공되지 않으면 set은 현재 로케일에 따라 정렬된 모든 셸 변수 및 함수의 이름과 값을 현재 설정된 변수를 설정하거나 재설정하기 위한 입력으로 재사용할 수 있는 형식으로 표시합니다.
동작은 다른 셸에서 반드시 동일할 필요는 없습니다. 예를 들어 ksh
set
셸 기능은 표시되지 않습니다.
답변2
set
쉘이 내장되어 있습니다., 쉘 옵션 및 위치 매개변수를 설정 및 설정 해제하는 데 사용됩니다.
인수가 없으면 set
현재 순서의 모든 쉘 변수가 인쇄됩니다(현재 세션의 환경 변수 및 변수 포함).로케일.
당신은 또한 읽을 수 있습니다배쉬 문서.
몇 가지 주의 사항이 있습니다.
set "$var"
var
에 할당 됩니다 $1
. 또는 로 시작하면 $var
내용이 일련의 셸 옵션으로 처리됩니다. 대부분의 POSIX 쉘은 유효하지 않은 옵션이 포함되면 오류를 인쇄합니다. 에서 시뮬레이션은 오류를 인쇄할 뿐만 아니라 유효한 옵션도 설정합니다. 첫 번째 잘못된 옵션에서 옵션 설정이 중지되면 모든 옵션이 할당됩니다. 존재하다:-
+
$var
$var
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 -
인수도 설정 해제되지 않습니다.힐리오스이런 행동도 있습니다.가보 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
힐리쉬-
인수에 if가 있으면 아무 작업도 수행하지 않습니다.
$ 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
답변3
set
출력은 있고 아무것도 반환되지 않기 때문에 which set
이것이 사용 중인 쉘(아마도 bash)의 일부라는 것을 알 수 있습니다.
남자 난교여러 번 언급했지만 연결하기가 더 쉽습니다.온라인 문서.
이 내장 함수는 매우 복잡하며 별도의 섹션이 필요합니다. set을 사용하면 쉘 옵션의 값을 변경하고 위치 매개변수를 설정하거나 쉘 변수의 이름과 값을 표시할 수 있습니다.
세트의 호출 사양은 다음과 같습니다.
set [--abefhkmnptuvxBCEHPT] [-o option-name] [argument …]
set [+abefhkmnptuvxBCEHPT] [+o option-name] [argument …]
따라서 man 명령줄에서 찾으려면 다음을 사용하여 검색할 수 있습니다.
/set.*abef
답변4
매개변수가 없으면 set 명령에 대한 정보를 찾을 수 없습니다. 사실 내 Linux 배포판에는 설정된 매뉴얼 페이지가 전혀 없습니다.
실제로 set
bash 자체가 내장되어 있으므로 맨 페이지 대신 bash의 도움말 매뉴얼에 액세스할 수 있습니다. 이를 수행하려면 help
이 예에서 또는 를 사용할 수 있습니다 help set
.