매개변수가 없는 set 명령의 기능은 무엇입니까?

매개변수가 없는 set 명령의 기능은 무엇입니까?

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$varyashzshshkshyashzshyash

var=-fxd; set "$var"

f동시에 x에 표시 됩니다 .$-

var=fdx; set "$var"

두 경우 모두 f에만 존재하며 및 시뮬레이션에 나타납니다 .$-fx$-zshshksh

이를 방지하려면 --위치 인수를 첫 번째 인수로 전달하여 설정할 수 있습니다. 이는 -또는로 시작 하더라도 다음과 같습니다 +.

var=-fdx; set -- "$var"

내용에 관계없이 $var에 할당됩니다 .$1

set --추가 인수가 없으면 모든 위치 인수가 재설정됩니다.

첫 번째 인수가 이면 -동작이 지정되지 않습니다. 알려진 모든 POSIX 쉘은 옵션( 제외 )을 설정 해제하고 그 이후의 모든 항목을 위치 인수에 할당 x합니다 .vposh-

set -xv - -f

-f에 할당되며 $1위치 set -인수도 설정 해제되지 않습니다.힐리오스이런 행동도 있습니다.가보 sh설정 vx옵션은 취소되지 않습니다.

유일한 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 배포판에는 설정된 매뉴얼 페이지가 전혀 없습니다.

실제로 setbash 자체가 내장되어 있으므로 맨 페이지 대신 bash의 도움말 매뉴얼에 액세스할 수 있습니다. 이를 수행하려면 help이 예에서 또는 를 사용할 수 있습니다 help set.

관련 정보