GNU/Linux >> Belajar Linux >  >> Linux

Cara Posix Menetapkan Argumen Nol Dari Aplikasi Target?

Di bash anda dapat menggunakan exec -a dan di zsh Anda juga dapat mengatur ARGV0 untuk menjalankan program dengan argumen ke-nol tertentu, tetapi apakah ada cara POSIX untuk melakukannya?

Seperti yang disarankan dalam satu komentar ini, Anda dapat membuat tautan simbolis (sementara) untuk mencapai ini, tetapi dengan cara ini saya tidak dapat menetapkan nilai argumen ke-nol yang baru ke nilai sembarang, mis. perintah dengan jalur absolut tertentu. Jadi apakah ada solusi lain?

Jawaban yang Diterima:

Tidak, tidak ada cara POSIX, selain mengkompilasi program C yang melakukannya. Sebagai yang cepat dan kotor:

$ 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 didukung oleh ksh93 , bash , zsh , busybox ash (sejak versi 1.27.0), yash , mksh (sejak versi r50e), Schily Bourne Shell (sejak Agustus 2015) jadi yang paling tersebar luas di antara shell.

Mungkin yang paling portabel adalah menggunakan perl yang lebih mungkin tersedia daripada kompiler 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

Linux
  1. Cara Memodifikasi File Di Tempat?

  2. Apakah Kami Memiliki Undo Di Linux?

  3. Cara Portabel (posix) Untuk Mencapai Substitusi Proses?

  1. Manual Programmer Posix Vs Manual Programmer Linux?

  2. Bash Mana yang Dieksekusi?

  3. Cara Membuat Daftar Hitam Aplikasi Individu Dari Menggunakan Overlay-scrollbars?

  1. Apa yang dimaksud dengan POSIX?

  2. Apakah ada cara untuk 'uniq' dengan kolom?

  3. Pembuatan profil aplikasi Linux