일부 스크립트가 있고 스크립트의 일부 명령은 다음과 같습니다.
./executable arg1 arg2 .. argn
위의 명령을 다음으로 변경하고 싶습니다.
LD_PRELOAD=/some/lib ./executable my_arg1 my_argn arg1 arg2 argn; some_other_command
스크립트를 변경하는 한 가지 방법이지만 그렇게 하고 싶지는 않습니다. 이 명령을 가로채서 변경하고 실행하고 싶습니다. 어떻게 해야 하나요?
답변1
먼저 기존 실행 파일을 새 위치로 이동합니다.
mv ./executable ./executable.original
둘째, 그 안에 쉘 스크립트를 작성하십시오. 다음 명령을 다음이라는 새 파일에 입력합니다 ./executable
.
#!/bin/sh
LD_PRELOAD=/some/lib ./executable.original my_arg1 my_argn "$@"
some_other_command
쉘은 "$@"
호출 프로그램 arg1 arg2 argn
이 제공하는 주문을 대체합니다.
셋째, 새 파일에 실행 비트를 설정합니다.
chmod a+rx ./executable
답변2
Bash에서는 펑키한 함수 이름을 가질 수 있으므로 이것이 정확히 원하는 작업을 수행해야 합니다.
./executable() {
LD_PRELOAD=/some/lib command ./executable my_arg1 my_argn arg1 arg2 argn
}
물론 가로채 executable
거나 그러지는 않을 것이다./usr/bin/executable