소스 코드를 수정하지 않고 대시 스크립트를 추적할 수 있나요?

소스 코드를 수정하지 않고 대시 스크립트를 추적할 수 있나요?

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

관련 정보