Para completar, aquí hay algunos programas C y C ++ para hacer esto que la gente ya ha compilado.
Siguiendo el comentario al que apunta, su aparente motivación para pedir "una forma POSIX" de hacer esto es saber cómo se puede lograr este mismo fin con shells como el shell Debian Almquist, el shell MirBSD Korn (antes de la versión R50e ), el shell ordinario compatible con POSIX de Debian y otros shells que no tienen extensiones para establecer el argumento 0 como los shells Bourne Again y Z. (El shell Korn '93, y el shell Mirorn Korn desde la versión R50e en adelante, admiten una -a
opción para sus exec
comandos integrados ).
execlina
Laurent Bercotexecline
viene con una exec
orden . Entonces, para duplicar el ejemplo de M. Chazelas, uno tendría un execline
script como
#! / command / execlineb -P
exec -a zzz ps -f
Bercot exec
es un comando externo ordinario, por supuesto. Entonces uno podría ejecutarlo desde un script de Debian Almquist Shell. Para superponer el programa de shell actual, se usaría el shell exec
para superponer con Bercot exec
, que a su vez establecería el argumento 0 y se superpondría con el programa de destino:
exec / command / exec -a "$ argv0" printer.sh
comida
El conjunto de herramientas nosh incluye un exec
comando. Para duplicar el ejemplo de M. Chazelas, se tendría un nosh
script como
#! / bin / nosh
exec -a zzz ps -f
Aunque está nosh
integrado, tambiénexec
es accesible como un comando externo ordinario. Entonces uno podría ejecutarlo desde un script de Debian Almquist Shell. Para superponer el programa de shell actual, se usaría el shell para superponer con el conjunto de herramientas nosh , que a su vez establecería el argumento 0 y se superpondría con el programa de destino:exec
exec
exec / usr / local / bin / exec -a "$ argv0" printer.sh
perp
El asesino de Wayne Marshall incluye un runargv0
comando . Este es un comando externo ordinario. Entonces uno podría ejecutarlo desde un script de Debian Almquist Shell. Para superponer el programa de shell actual, se usaría el shell exec
para superponer con el conjunto de herramientas perp runargv0
, que a su vez establecería el argumento 0 y se superpondría con el programa de destino:
exec runargv0 printer.sh "$ argv0"
ejecutarlo
La runa de Gerrit Pape incluye un chpst
comando . Este es un comando externo ordinario. Entonces uno podría ejecutarlo desde un script de Debian Almquist Shell. Para superponer el programa de shell actual, se usaría el shell exec
para superponer con runit chpst
, lo que a su vez establecería el argumento 0 y se superpondría con el programa de destino:
exec chpst -b "$ argv0" printer.sh
runit
mala ganasystemd
, me alegro mucho de que me presentennosh
. ¡Muchas gracias!