bash
を使用でき、0番目の引数を使用してプログラムを実行することを選択することもできますが、exec -a
これを行うPOSIXメソッドはありますか?zsh
ARGV0
提案に従ってくださいこのコメントにこれを達成するために(一時的な)シンボリックリンクを作成できますが、新しいゼロ番目の引数値を特定の絶対パスを持つコマンドなどの任意の値に設定することはできません。それでは、他の解決策はありませんか?
ベストアンサー1
いいえ、Cプログラムをコンパイルする以外にこれを行うPOSIXメソッドはありません。迅速で汚れたアプローチ:
$ echo 'int main(int c,char*v[]){
execvp(v[1],&v[2]);perror(v[1]);return 127;}'>r.c && make r
$ ./r ps zzz -f
UID PID PPID C STIME TTY TIME CMD
chazelas 7412 7411 0 10:44 pts/4 00:00:00 /bin/zsh
chazelas 21187 7412 0 22:33 pts/4 00:00:00 zzz -f
exec -a
ksh93
、、、、(バージョン1.27.0以降)、、bash
(サポートzsh
busybox ash
yash
mksh
r50eバージョンから開始)、これヒリーバーンシェル(2015年8月現在) したがって、貝殻の中で最も広く使用されている貝殻です。
おそらく最も移植性の高い方法は、perl
Cコンパイラよりも便利なコンパイラを使用することです。
$ perl -e 'exec {shift} @ARGV' ps zzz -f
UID PID PPID C STIME TTY TIME CMD
chazelas 7554 7411 0 10:58 pts/12 00:00:00 /bin/zsh
chazelas 7630 7554 0 11:02 pts/12 00:00:00 zzz -f