Come posso elencare tutte le variabili della shell?


Risposte:


21

Elencare tutte le variabili della shell

bash: usare set -o posix ; set. Le opzioni POSIX sono lì per evitare di fornire troppe informazioni, come le definizioni delle funzioni. declare -pfunziona anche.

zsh : uso typeset

Variabili della shell e variabili di ambiente

Una variabile di ambiente è disponibile per i exec()processi secondari secondari (come copia. Se il processo padre modifica la variabile, l'ambiente secondario non viene aggiornato). Una variabile non ambientale è disponibile solo per la shell corrente e le fork()subshells correnti . Questa distinzione è presente in tutte le conchiglie.

(completato grazie ai commenti)


declare -pfare lo stesso
Costas il

La domanda ha anche una risposta qui: stackoverflow.com/questions/1305237/…
Uriel,

1
set -o posixnon esiste in zsh; setnon genera definizioni di funzioni.
vinc17,

1
set -o posixè un errore di sintassi nella maggior parte delle shell.
Mikeserv,

3
Le variabili shell sono disponibili anche nei processi figlio. La differenza si presenta quando il processo figlio esegue un nuovo programma: le variabili di ambiente vengono passate exece le variabili di shell no.
Barmar,

7

Ci sono molte alternative:

printenv

Stampa i valori degli ambienti VARIABILI specificati. Se non viene specificato VARIABILE, stampare il nome e le coppie di valori per tutti.

ENV

env - esegue un programma in un ambiente modificato

esportare

Imposta una variabile d'ambiente. Contrassegna ogni nome da passare ai processi figlio nell'ambiente .....

-p Visualizza l'output in una forma che può essere riutilizzata come input.

Se non viene fornito alcun nome o viene fornita l'opzione `-p ', viene visualizzato un elenco di nomi esportati.

impostato

è utile anche per ottenere variabili shell.

Se hai bisogno di informazioni extra (intero, esportato) dovresti invece usare

typeset

l'esportazione ha un vantaggio, che il suo output può essere immediatamente riletto sulla shell.

Infine, c'è

compgen -v

Visualizza possibili completamenti in base alle opzioni.

che mostra tutte le variabili, shell e ambiente, senza il loro valore o informazioni extra. Devi trovare $ VARIABLE_NAME per trovare il valore della variabile. Ma almeno l'elenco è completo. Appartiene a bash , non a zsh .


1
exportnon ha alcun vantaggio rispetto set, almeno, quando si tratta di quotare per il rientro della shell. E printenve envnon sono affatto di variabili di shell, anche se questi fanno spesso coincidono con le variabili di ambiente.
Mikeserv,

3

Con zsh, è possibile utilizzare typeset, che fornisce più informazioni rispetto set, ad esempio, al tipo di variabili. È ancora possibile filtrare l'output con grepo sed, a seconda di ciò che si desidera. Le variabili di ambiente sono contrassegnate come exportednell'output.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.