シバングの複数の引数
shebang行(#!)を介して実行可能ファイルに複数のオプションを渡す一般的な方法があるかどうか疑問に思っています。 私はNixOSを使用していますが、私が書くスクリプトの最初の部分は通常/usr/bin/envです。私が遭遇する問題は、その後に来るすべてがシステムによって単一のファイルまたはディレクトリとして解釈されることです。 たとえば、bashposixモードで実行されるスクリプトを書きたいとします。シバンを書く簡単な方法は次のとおりです。 #!/usr/bin/env bash --posix ただし、結果のスクリプトを実行しようとすると、次のエラーが生成されます。 /usr/bin/env: ‘bash --posix’: No such file or directory 私はこの投稿を知っていますが、より一般的でクリーンなソリューションがあるかどうか疑問に思っていました。 編集:Guileスクリプトには、マニュアルのセクション4.3.4に記載されている、目的を達成する方法があることを知っています。 #!/usr/bin/env sh exec guile -l fact -e '(@ (fac) main)' -s "$0" "$@" !# ここでのトリックは、2番目の行(で始まるexec)がコードとして解釈されますshが、#!... !#ブロック内にあるため、コメントとして解釈されるため、Guileインタープリターによって無視されることです。 このメソッドをインタープリターに一般化することはできませんか? 2番目の編集:少し遊んだ後、から入力を読み取ることができるインタープリターのstdin場合、次のメソッドが機能するようです: #!/usr/bin/env sh sed '1,2d' "$0" | bash --verbose --posix /dev/stdin; exit; ただし、sh通訳が仕事を終えるまでプロセスは存続するため、おそらく最適ではありません。フィードバックや提案をいただければ幸いです。