POSIX 셸: arg0에 대한 `exec`가 변경되었습니다.

POSIX 셸: arg0에 대한 `exec`가 변경되었습니다.

exec나는 프로그램을 갖고 arg0과 환경을 포함한 인수를 제어하고 싶습니다 . CI를 사용하면 가능합니다 execve. POSIX 쉘에서 이 작업을 수행할 수 있습니까?

답변1

POSIX 문서에 따르면특수 내장 유틸리티, exec의 구문은 다음과 같습니다

exec [command [argument...]]

쉘이 호출되는 환경~해야 한다에 퍼지다주문하다따라서 실행 전에 설정하는 것이 foo=bar exec cmd좋습니다. 그러나 고려해 볼 수도 있습니다.근본적인절.

대부분의 역사적 구현은 일관성이 없습니다. foo=bar exec cmd는 foo를 cmd에 전달하지 않습니다.

argv[0]을 수정하는 기본 제공 방법도 없습니다.
가능한 해결 방법에는 기호 링크가 포함됩니다.일부 이름도착하다주문하다이전에 exec some_name(전체 크레딧은 다음과 같습니다.무루)

알아채다세게 때리다 다루기 힘든그리고케시exec 명령의 확장된 구현을 지원합니다.

exec [-cl] [-a name] [command [arguments]]

-a 옵션으로 인해이름옹호하다argv[0]

-a argv0을 사용하면 실행 명령의 argv[0] 문자열을 설정합니다.

그러나 둘 다시추...도 아니다스프린트...도 아니다물고기이것을 지원하십시오.

관련 정보