Autore Topic: Che differenza c'è tra questi comandi?  (Letto 826 volte)

Buntolo

  • Visitatore
Che differenza c'è tra questi comandi?
« il: Settembre 21, 2011, 08:33:02 am »
Codice: [Seleziona]
killall -USR1 xfdesktop
killall -USR1 xfdesktop > /dev/null 2>&1

export DISPLAY=:0 && xfdesktop --reload
DISPLAY=:0 && xfdesktop --reload
export DISPLAY=:0; /usr/bin/xfdesktop -reload

export DISPLAY=:0.0 && xfdesktop --reload
DISPLAY=:0.0 && xfdesktop --reload
export DISPLAY=:0.0; /usr/bin/xfdesktop -reload

So cosa facciano export e > /dev/null 2>&1 ma non capisco a che servano in questo caso.
Ad esempio cambio di sfondo non da nessun output e non prende nessun input, quindi a che pro metterci > /dev/null 2>&1 ?

Poi perché fare in quel modo, quando dalle mie prove ho visto che basta un più semplice:
Codice: [Seleziona]
DISPLAY=:0 xfdesktop --reload??

Capisco che se /usr/bin non è in $PATH vada specificato a manina, ma mi sembra strano sia possibile, in quale distro non è di base nel $PATH della shell?
Oppure serve se qualcuno ha installato una shell diversa da quella di base?

centoventicinque

  • Visitatore
Re:Che differenza c'è tra questi comandi?
« Risposta #1 il: Settembre 21, 2011, 08:46:11 am »
sai che a me capitava una cosa  simile  nonnostante /usr/bin/ fosse in path ?

non so ancora perche comincio a chiedermelo, ne perche ha smesso.

la cosa sicura è che smise quando  qualcosa o qualcuno fece sparire /bin/bash !

fu una gran menata  :verovero:

SuNjACk

  • Visitatore
Re:Che differenza c'è tra questi comandi?
« Risposta #2 il: Settembre 21, 2011, 03:50:10 pm »
con export esporti (ma va :lki:) la variabile in globale, senza export la variabile  rimane una variabile locale della sessione della shel e viene "distrutta" al termine della sessione

con > /dev/null 2>&1 elimini completamente l'output, sia da stdout ( dove si usa > ) che è l'output normale sia da stderr (dove si usa 2> ) che invece è l'output d'errore.


Buntolo

  • Visitatore
Re:Che differenza c'è tra questi comandi?
« Risposta #3 il: Settembre 21, 2011, 03:57:12 pm »
con export esporti (ma va :lki:) la variabile in globale, senza export la variabile  rimane una variabile locale della sessione della shel e viene "distrutta" al termine della sessione

con > /dev/null 2>&1 elimini completamente l'output, sia da stdout ( dove si usa > ) che è l'output normale sia da stderr (dove si usa 2> ) che invece è l'output d'errore.

E fin qui ci siamo, ma a che servono nel caso specifico di "ricarica" della scrivania?

SuNjACk

  • Visitatore
Re:Che differenza c'è tra questi comandi?
« Risposta #4 il: Settembre 21, 2011, 03:58:44 pm »
con export esporti (ma va :lki:) la variabile in globale, senza export la variabile  rimane una variabile locale della sessione della shel e viene "distrutta" al termine della sessione

con > /dev/null 2>&1 elimini completamente l'output, sia da stdout ( dove si usa > ) che è l'output normale sia da stderr (dove si usa 2> ) che invece è l'output d'errore.

E fin qui ci siamo, ma a che servono nel caso specifico di "ricarica" della scrivania?

Spiegati meglio :ysy:

Buntolo

  • Visitatore
Re:Che differenza c'è tra questi comandi?
« Risposta #5 il: Settembre 21, 2011, 04:09:43 pm »
con export esporti (ma va :lki:) la variabile in globale, senza export la variabile  rimane una variabile locale della sessione della shel e viene "distrutta" al termine della sessione

con > /dev/null 2>&1 elimini completamente l'output, sia da stdout ( dove si usa > ) che è l'output normale sia da stderr (dove si usa 2> ) che invece è l'output d'errore.

E fin qui ci siamo, ma a che servono nel caso specifico di "ricarica" della scrivania?

Spiegati meglio :ysy:

Tutti quei comando fanno una cosa: ricaricano il desktop (tranno uno che lo uccide e poi lo avvia di nuovo, vabbè), ergo a che minchia serve export?
Poi input non ne ha, output nemmeno, forse forse gli errori, ma ne dubito, quindi non vedo a che serva il > /dev/null 2>&1

Poi che differenza c'è tra DISPLAY=:0.0 e DISPLAY=:0 ?
Oppure a che serve mettere &&, visto che c'è un solo comando (DISPLAY non è un comando) ??

SuNjACk

  • Visitatore
Re:Che differenza c'è tra questi comandi?
« Risposta #6 il: Settembre 21, 2011, 04:21:48 pm »
credo che il tutto possa essere semplificato così:

Codice: [Seleziona]
killall -1 xfdesktop && DISPLAY=${DISPLAY:-:0}; xfdesktop --reload

killall -1 è uguale a killall -USR1
DISPLAY:=${DISPLAY:-:0} vuol dire: a DISPLAY dai il valore di « :0 » se DISPLAY è vuoto o nullo e tutto ciò è un assegnazione di variabile e non proprio un comando
il ; serve per indicare la fine di un istruzione invece il && si comporta un po' diversamente, in pratica sarebbe: dato cmd1 && cmd2 se il cmd1 è andato a buon file (restituisce 0 come codice d'uscita) allora esegui il comando successivo cioè cmd2

esiste anche l'opposto di && che sarebbe || che esegue cmd2 solo se cmd1 non è andato a buon fine (restituisce un valore diverso da 0)

Buntolo

  • Visitatore
Re:Che differenza c'è tra questi comandi?
« Risposta #7 il: Settembre 21, 2011, 04:23:38 pm »
Pheeqo.

Ed in questo caso:
Codice: [Seleziona]
DISPLAY=:0.0 && xfdesktop --reload
&& non è inutile, dacché DISPLAY non è un comando?

ps: che limiti ha
Codice: [Seleziona]
DISPLAY=:0 xfdesktop --reloadrispetto a tutti gli altri?

SuNjACk

  • Visitatore
Re:Che differenza c'è tra questi comandi?
« Risposta #8 il: Settembre 21, 2011, 04:27:35 pm »
Pheeqo.

Ed in questo caso:
Codice: [Seleziona]
DISPLAY=:0.0 && xfdesktop --reload
&& non è inutile, dacché DISPLAY non è un comando?

ps: che limiti ha
Codice: [Seleziona]
DISPLAY=:0 xfdesktop --reloadrispetto a tutti gli altri?

1) Esatto

2) In questo caso sarebbe una dichirazione di variabile ma a DISPLAY si da solo ":0" perchè gli spazi funzionano come separatore di campi e la shell attribuisce alla variabile solo il primo campo e quindi non essendoci quotazione (niente apici e backslash) a DISPLAY va solo :0 i e il resto viene ignorato.