Para completar, aqui estão alguns programas C e C ++ para fazer isso que as pessoas já têm compilado.
Indo pelo comentário que você aponta, sua aparente motivação para pedir "uma maneira POSIX" de fazer isso é saber como se pode alcançar este mesmo fim com shells como o shell do Debian Almquist, o shell MirBSD Korn ( antes da versão R50e), o shell Ordinary-Compliant do Debian POSIX, e outros shells que não possuem extensões para configurar o 0º argumento como os shells Bourne Again e Z possuem. (O shell '93 Korn e o shell MirBSD Korn da versão R50e em diante suportam uma opção -a para seus comandos exec incorporados.)
execline
execline de Laurent Bercot vem com an exec command . Então, para duplicar o exemplo de M. Chazelas, um teria um script execline como
#!/command/execlineb -P
exec -a zzz ps -f
O exec de Bercot é um comando externo comum, é claro. Então, pode-se executá-lo dentro de um script do Debian Almquist Shell. Para sobrepor o programa shell atual, seria usado o exec do shell para sobrepor com Bercot exec , que por sua vez configuraria o 0º argumento e a sobreposição com o programa de destino:
exec /command/exec -a "$argv0" printer.sh
nosh
O conjunto de ferramentas inclui um comando exec . Para duplicar o exemplo de M. Chazelas, um teria um script nosh como
#!/bin/nosh
exec -a zzz ps -f
Embora seja um nosh embutido, esse exec é também acessível como um comando externo comum. Então, pode-se executá-lo dentro de um script do Debian Almquist Shell. Para sobrepor o programa shell atual, seria usado o exec do shell para sobrepor com exec do conjunto de ferramentas, que por sua vez definiria o 0º argumento e a sobreposição com o programa de destino:
exec /usr/local/bin/exec -a "$argv0" printer.sh
perp
O perpetrador de Wayne Marshall inclui um comando runargv0 . Este é um comando externo comum. Então, pode-se executá-lo dentro de um script do Debian Almquist Shell. Para sobrepor o programa shell atual, seria usado o exec do shell para sobrepor com runargv0 do conjunto de ferramentas do perp, que por sua vez configuraria o 0º argumento e a sobreposição com o programa de destino:
exec runargv0 printer.sh "$argv0"
runit
Runit de Gerrit Pape inclui um comando chpst . Este é um comando externo comum. Então, pode-se executá-lo dentro de um script do Debian Almquist Shell. Para sobrepor o programa shell atual, seria usado o exec do shell para sobrepor com chpst do runit, que por sua vez configuraria o 0º argumento e a sobreposição com o programa de destino:
exec chpst -b "$argv0" printer.sh