Para completar, aqui estão alguns programas em C e C ++ para fazer isso que as pessoas já compilaram.
Seguindo o comentário que você aponta, sua aparente motivação para pedir "uma maneira POSIX" de fazer isso é saber como se pode alcançar esse mesmo fim com shells como o shell Debian Almquist, o shell MirBSD Korn (antes da versão R50e ), o shell Ordinário compatível com Debian POSIX e outros shells que não possuem extensões para definir o argumento 0 como os shells Bourne Again e Z possuem. (O shell Korn '93 e o MirBSD Korn da versão R50e em diante suportam uma -a
opção para seus exec
comandos internos .)
execline
Laurent Bercotexecline
vem com um exec
comando . Então, para duplicar o exemplo de M. Chazelas, seria necessário um execline
script como
#! / command / execlineb -P
exec -a zzz ps -f
O Bercot exec
é um comando externo comum, é claro. Portanto, pode-se executá-lo a partir de um script Debian Almquist Shell. Para sobrepor o programa de shell atual, seria usado o shell exec
para sobrepor ao Bercot exec
, que por sua vez definiria o 0º argumento e sobreporia ao programa de destino:
exec / comando / exec -a "$ argv0" printer.sh
nosh
O conjunto de ferramentas nosh inclui um exec
comando. Para duplicar o exemplo de M. Chazelas, seria necessário um nosh
script como
#! / bin / nosh
exec -a zzz ps -f
Embora seja nosh
interno, tambémexec
é acessível como um comando externo comum. Portanto, pode-se executá-lo a partir de um script Debian Almquist Shell. Para sobrepor o atual programa de shell, usaria o shell para sobrepor-se ao conjunto de ferramentas nosh , que por sua vez definiria o 0º argumento e sobrepor-se ao programa de destino:exec
exec
exec / usr / local / bin / exec -a "$ argv0" printer.sh
criminoso
O criminoso de Wayne Marshall inclui um runargv0
comando . Este é um comando externo comum. Portanto, pode-se executá-lo a partir de um script Debian Almquist Shell. Para sobrepor o programa de shell atual, seria usado o shell exec
para sobrepor-se ao conjunto de ferramentas perp runargv0
, que por sua vez definiria o 0º argumento e sobrepor-se ao programa de destino:
exec runargv0 printer.sh "$ argv0"
executá-lo
O runit de Gerrit Pape inclui um chpst
comando . Este é um comando externo comum. Portanto, pode-se executá-lo a partir de um script Debian Almquist Shell. Para sobrepor o programa de shell atual, usaria o shell exec
para sobrepor aos runit chpst
, que por sua vez definiriam o 0º argumento e sobreporiam ao programa de destino:
exec chpst -b "$ argv0" printer.sh
runit
relutantemente procuradosystemd
, fico muito feliz em ser apresentadonosh
. Muito Obrigado!