나는 그것이 무엇을 bash -x
하는지 알고 있지만, 그것은 무엇을 하는가 bash +x
?
Google 검색에서는 결과가 나오지 않았으며 설명서에는 이에 대한 언급이 없습니다.
답변1
-x
, 그것은 같다-o xtrace
만들다옵션 xtrace
.
+x
, 그것은 같다+o xtrace
장애를 입히다그것.
이러한 옵션을 인터프리터에 전달하여 시작 시 활성화/비활성화하거나 ( set
/// set -o xtrace
) 에 전달 set -x
하여 런타임 시 활성화/비활성화할 수 있습니다.set +o xtrace
set +x
그러나 옵션 측면에서 xtrace
옵션은 다음과 같습니다.아니요$SHELLOPTS
기본적으로 활성화되어 있으며 bash는 env 변수 또는 경로가 저장된 초기화 파일보다 먼저 명령줄 옵션을 처리하므로 $BASH_ENV
이 bash
옵션 을 +x
호출하는 것은 의미가 없습니다 .
$ cat env
set -o xtrace
$ BASH_ENV=env bash +x -c 'echo foo'
+ echo foo
foo
$ env SHELLOPTS=xtrace bash +x -c 'echo foo'
+ echo foo
foo
두 경우 모두 설정을 통과하거나 취소할 수 있는 +x
방법이 없습니다 .set -o xtrace
$BASH_ENV
$SHELLOPTS
-x
or 이후에만 작동합니다 -o xtrace
.
$ bash -x +x -c 'echo foo'
foo
따라서 (가능성 없음)이 있는 경우 bash +x ./script.sh
1이 의미가 있을 수 있습니다.alias bash='bash -x'
하지만 다음과 같이 할 수 있습니다.
$ bash +B -c 'echo {a,b}'
{a,b}
braceexpand
이 옵션을 비활성화하려면예기본적으로 활성화되어 있습니다.
아니면 이렇게 할 수도 있습니다:
$ env SHELLOPTS=xtrace bash -c 'set +x; echo foo'
+ set +x
foo
장애를 입히다xtrace
뒤쪽에처리 중에 활성화됩니다 $SHELLOPTS
.
1 현재 디렉토리에서 찾을 수 없을 때 검색을 ./
방지해야 합니다 .bash
script.sh
$PATH