実装する

実装する

bashを使用でき、0番目の引数を使用してプログラムを実行することを選択することもできますが、exec -aこれを行うPOSIXメソッドはありますか?zshARGV0

提案に従ってくださいこのコメントにこれを達成するために(一時的な)シンボリックリンクを作成できますが、新しいゼロ番目の引数値を特定の絶対パスを持つコマンドなどの任意の値に設定することはできません。それでは、他の解決策はありませんか?

ベストアンサー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 -aksh93、、、、(バージョン1.27.0以降)、、bash(サポートzshbusybox ashyashmkshr50eバージョンから開始)、これヒリーバーンシェル(2015年8月現在) したがって、貝殻の中で最も広く使用されている貝殻です。

おそらく最も移植性の高い方法は、perlCコンパイラよりも便利なコンパイラを使用することです。

$ 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

おすすめ記事