set -x
소스 코드를 수정하지 않고(예: shebang 변경 또는 시작 부분에 a 삽입) 디버깅 목적으로 쉘 스크립트를 추적하고 싶습니다 . 이는 dpkg postinst 스크립트이므로 실제로 쉘에서 직접 호출하지는 않습니다.
이에 대한 환경 변수를 찾기 위해 매뉴얼 페이지를 검색했지만 dash
아무것도 찾을 수 없습니다.
이를 수행할 수 있는 방법이 있습니까?
답변1
슈퍼유저 액세스 권한이 있기 때문에 /bin/sh
.
먼저 래퍼를 만듭니다. 홈 디렉터리에 mysh
다음 콘텐츠로 이름이 지정된 파일을 만듭니다.
#!/bin/dash
exec /bin/dash -x "$@"
실행 가능하게 만드세요.
$ chmod +x ~/mysh
그런 다음 변경하십시오 /bin/sh
. 먼저 그것이 가리키는 곳을 주목하십시오.
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 9 Jan 12 17:42 /bin/sh -> /bin/dash
그런 다음 면책으로 변경하십시오. (경고: 시스템이 작동하지 않는 경우 몇 마이크로초가 소요됩니다 /bin/sh
.)
$ sudo ln -sf ~/mysh /bin/sh
일을 마친 후에는 다시 시작하세요.
$ sudo ln -sf /bin/dash /bin/sh
행운을 빌어요!
답변2
-x
호출 명령 자체에서 이 플래그를 사용할 수 있습니다 .
sh -x ./script