GNU/Linux >> Linux Esercitazione >  >> Linux

Modo Posix per impostare l'argomento zero di un'applicazione target?

In bash puoi usare exec -a e in zsh in alternativa puoi anche impostare ARGV0 per eseguire un programma con un certo argomento zero, ma esiste anche un modo POSIX per farlo?

Come suggerito in questo commento, potresti creare un collegamento simbolico (temporaneo) per raggiungere questo obiettivo, ma in questo modo non sono riuscito a impostare il nuovo valore dell'argomento zero su qualsiasi valore arbitrario, ad es. il comando con un certo percorso assoluto. Quindi c'è qualche altra soluzione?

Risposta accettata:

No, non esiste un modo POSIX, a parte la compilazione di un programma C che lo faccia. Come veloce e sporco:

$ 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 è supportato da ksh93 , bash , zsh , busybox ash (dalla versione 1.27.0), yash , mksh (dalla versione r50e), la Schily Bourne Shell (da agosto 2015) è quindi la più diffusa tra le conchiglie.

Probabilmente la soluzione più portabile sarebbe ricorrere a perl che è più probabile che sia disponibile di un compilatore 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. Modo per modificare un file sul posto?

  2. Abbiamo un annullamento in Linux?

  3. Rsync ~/foo Target/foo è uguale a Rsync ~/foo/ Target/foo/?

  4. Manuale del programmatore Posix Vs Manuale del programmatore Linux?

  5. Quale Bash è in esecuzione?

Autorizzazioni dell'applicazione Snap

Un ottimo modo per eseguire il backup dei dati in Ubuntu Linux

Qual è il significato di POSIX?

C'è un modo per "uniq" per colonna?

Profilazione delle applicazioni Linux

Il modo migliore per aggiungere il supporto SNMP alla tua applicazione su Debian