Для полноты, вот несколько программ на C и C ++ для этого, которые люди уже скомпилировали.
Судя по комментарию, на который вы указываете, ваша очевидная мотивация для запроса «способа POSIX» заключается в том, чтобы знать, как можно достичь того же результата с помощью оболочек, таких как оболочка Debian Almquist, оболочка MirBSD Korn (до версии R50e). ), Debian POSIX-совместимая обычная оболочка и другие оболочки, которые не имеют расширений для установки 0-го аргумента, как в оболочках Bourne Again и Z. (Оболочка Korn '93 и оболочка MirBSD Korn начиная с версии R50e поддерживают -a
опцию для своих встроенных exec
команд.)
execline
Лоран Bercot - хexecline
поставляется с в exec
команде . Таким образом, чтобы дублировать пример М. Чазеласа, нужно иметь такой execline
сценарий, как
#! / command / execlineb -P
exec -a zzz ps -f
Конечно, Bercot exec
- это обычная внешняя команда. Таким образом, его можно запустить из сценария оболочки Debian Almquist. Чтобы наложить текущую программу оболочки, exec
нужно использовать оболочки для наложения с помощью Bercot exec
, который, в свою очередь, установит 0-й аргумент и наложит на целевую программу:
exec / command / exec -a "$ argv0" printer.sh
перекус
В набор инструментов nosh входит exec
команда. Чтобы дублировать пример М. Чазеласа, можно было бы nosh
написать такой сценарий, как
#! / Bin / перекус
exec -a zzz ps -f
Хотя это nosh
встроенная функция, exec
она также доступна в виде обычной внешней команды. Таким образом, его можно запустить из сценария оболочки Debian Almquist. Чтобы наложить текущую программу оболочки, exec
нужно использовать оболочки для наложения на набор инструментов nosh exec
, который, в свою очередь, установит 0-й аргумент и наложит на целевую программу:
exec / usr / local / bin / exec -a "$ argv0" printer.sh
преступник
Уэйн Маршалл преступник в включает в runargv0
команду . Это обычная внешняя команда. Таким образом, его можно запустить из сценария оболочки Debian Almquist. Чтобы наложить текущую программу оболочки, exec
нужно использовать оболочки для наложения на набор инструментов perp runargv0
, который, в свою очередь, установит 0-й аргумент и наложит на целевую программу:
exec runargv0 printer.sh "$ argv0"
запустить его
Рунит Геррита Папе включает вchpst
себя команду . Это обычная внешняя команда. Таким образом, его можно запустить из сценария оболочки Debian Almquist. Чтобы наложить текущую программу оболочки, exec
нужно использовать оболочки для наложения с помощью runit chpst
, что, в свою очередь, установит 0-й аргумент и наложение на целевую программу:
exec chpst -b "$ argv0" printer.sh
runit
неохотно повернулсяsystemd
, я очень рад, что меня представилиnosh
. Большое спасибо!