Нещодавно я написав патч для версії GNU Coreutils envдля вирішення цієї проблеми:
http://lists.gnu.org/archive/html/coreutils/2017-05/msg00018.html
Якщо у вас є це, ви можете зробити:
envрозділиться :lang:foo:--barна поля lang, fooі --bar. Він буде шукати PATHперекладача lang, а потім викликати його з аргументами --foo,bar плюс шлях до сценарію і аргументи, скрипта.
Також є функція передавати назву сценарію посередині параметрів. Припустимо, ви хочете запустити lang -f <thecriptname> other-arg, а потім решту аргументів. З цим виправленим словом envце робиться так:
Найлівіше поле, що еквівалентно {} , замінюється першим аргументом, що слідує, який під викликом хеш-вибуху є іменем сценарію. Потім цей аргумент видаляється.
Ось, other-arg може бути щось обробленеlang сценарієм або, можливо, щось оброблене.
Щоб краще зрозуміти, дивіться численні echo тести у патчі.
Я вибрав :символ, оскільки це існуючий роздільник, який використовується в PATHсистемах POSIX. Так envробить PATHпошук, це зникаюче навряд чи буде використовуватися для програми, ім'я якої містить двокрапку. {}Маркер походить від findутиліти, яка використовує його для позначення вставки шляху в -execкомандному рядку.