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