Per completezza, ecco alcuni programmi C e C ++ per fare ciò che le persone hanno già compilato.
Seguendo il commento a cui fai riferimento, la tua apparente motivazione per chiedere "un modo POSIX" di fare questo è sapere come si può raggiungere lo stesso scopo con shell come la shell Debian Almquist, la shell MirBSD Korn (prima della versione R50e ), la shell ordinaria conforme a POSIX Debian e altre shell che non hanno estensioni per l'impostazione del 0 ° argomento come hanno le shell Bourne Again e Z. (La shell Korn '93 e la shell Korn MirBSD dalla versione R50e in poi supportano -a
un'opzione per i loro exec
comandi integrati .)
execline
Laurent Bercotexecline
arriva con un exec
comando . Quindi per duplicare l'esempio di M. Chazelas si dovrebbe avere una execline
sceneggiatura come
#! / command / execlineb -P
exec -a zzz ps -f
Bercot exec
è un normale comando esterno, ovviamente. Quindi è possibile eseguirlo da uno script Debian Almquist Shell. Per sovrapporre il programma di shell corrente si utilizzerebbero quelli della shell exec
per sovrapporre Bercot exec
, che a sua volta imposterebbe il 0 ° argomento e si sovrapporrebbe al programma di destinazione:
exec / command / exec -a "$ argv0" printer.sh
fare uno spuntino
Il set di strumenti di nosh include un exec
comando. Per duplicare l'esempio di M. Chazelas si dovrebbe avere una nosh
sceneggiatura come
#! / Bin / nosh
exec -a zzz ps -f
Sebbene sia nosh
integrato, exec
è accessibile anche come un normale comando esterno. Quindi è possibile eseguirlo da uno script Debian Almquist Shell. Per sovrapporre l'attuale programma di shell si dovrebbero usare le shell exec
per sovrapporre il set di strumenti di nosh exec
, che a sua volta imposterebbe l'argomento 0 e si sovrapporrebbe al programma di destinazione:
exec / usr / local / bin / exec -a "$ argv0" printer.sh
perp
Il criminale di Wayne Marshall include un runargv0
comando . Questo è un normale comando esterno. Quindi è possibile eseguirlo da uno script Debian Almquist Shell. Per sovrapporre il programma di shell corrente si dovrebbero usare le shell exec
per sovrapporre il set di strumenti di perp runargv0
, che a sua volta imposterebbe l'argomento 0 e si sovrapporrebbe al programma di destinazione:
exec runargv0 printer.sh "$ argv0"
eseguirlo
La runit di Gerrit Pape include un chpst
comando . Questo è un normale comando esterno. Quindi è possibile eseguirlo da uno script Debian Almquist Shell. Per sovrapporre l'attuale programma di shell si dovrebbero usare le shell exec
per sovrapporre a runit chpst
, che a sua volta imposterebbe l'argomento 0 e si sovrapporre al programma di destinazione:
exec chpst -b "$ argv0" printer.sh
runit
rivolto con riluttanzasystemd
, sono molto contento di essere presentatonosh
. Grazie molto!