Comment lister tous les noms de variables et leurs valeurs actuelles?
Y compris non seulement $HOME
, $PWD
etc mais tout autre que vous avez défini.
Comment lister tous les noms de variables et leurs valeurs actuelles?
Y compris non seulement $HOME
, $PWD
etc mais tout autre que vous avez défini.
Pour bash: (le shell standard dans Ubuntu)
Entrez la commande suivante dans un terminal pour imprimer toutes les variables d'environnement:
printenv
Pour plus d'informations sur cette commande, lisez la printenv
page de manuel.
Pour afficher une liste comprenant les "variables shell", vous pouvez entrer la commande suivante:
( set -o posix ; set ) | less
Cela vous montrera non seulement les variables shell, mais aussi les variables d'environnement.
Pour plus d'informations sur ce sujet, lisez:
Pour zsh: (un shell avancé)
Utilisez la commande suivante:
( setopt posixbuiltin; set; ) | less
Pour plus d'informations sur les options ZSH, voir zshoptions
page de manuel.
Vous pouvez voir toutes les variables avec le declare
builtin.
declare -p
Si vous n'êtes intéressé que par les variables d'environnement, utilisez
declare -xp
Exécuter help declare
pour voir quelles sont les autres options.
Je sais que cette question est assez ancienne et répondue, mais je pense que je peux ajouter un peu d'informations utiles.
Dans toutes les méthodes décrites ci-dessus, la procédure suggérée est:
env
, ouprintenv
ou quoi que ce soitLe problème de ces solutions est que vous voyez les variables d'environnement du shell qui s'exécute dans le terminal. Vous ne voyez pas les variables d'environnement disponibles pour une application exécutée, par exemple, directement par l'interface graphique.
Ceci est perceptible si, par exemple, vous utilisez votre ~/.profile
, ou .bashrc
, ou .zshenv
(en fonction de votre shell) pour modifier les variables d'environnement - - - comme l'ajout classique de répertoires au chemin.
Pour voir les variables d'environnement disponibles pour l'application démarrée directement dans l'environnement graphique, vous pouvez faire ce qui suit (dans Gnome Shell, je suis sûr qu'il existe une méthode équivalente dans tous les autres DE):
xterm -e bash --noprofile --norc
(Ou, si vous n'avez pas xterm
, gnome-terminal -- bash --noprofile --norc
--- merci à @Mike Nakis pour le commentaire).
Vous avez maintenant un terminal avec un shell qui n'a ajouté aucune variable d'environnement. Vous pouvez utiliser env
ici pour lister toutes vos variables d'environnement:
Évidemment, le nouveau shell aura les variables d'environnement ajoutées par les fichiers système, mais ces variables devraient être disponibles (par héritage) pour tous les programmes du système de toute façon.
Je poste ceci parce que c'est la quatrième fois que je dois rechercher à nouveau cette astuce, en vérifiant mon .pam_environment
fichier. Alors maintenant, je vais le trouver plus rapidement (et dans le processus, j'espère aider quelqu'un d'autre...)
Pour lister les variables d'environnement dans le terminal avec CTRL+ALT+T vous pouvez utiliser env
commande.
exemple :
[raja@localhost ~]$ envXDG_VTNR=1SSH_AGENT_PID=3671XDG_SESSION_ID=3HOSTNAME=localhost.localdomainIMSETTINGS_INTEGRATE_DESKTOP=yesGPG_AGENT_INFO=/home/raja/.gnupg/S.gpg-agent:3691:1GLADE_PIXMAP_PATH=:TERM=xterm-256colorSHELL=/bin/bashXDG_MENU_PREFIX=xfce-DESKTOP_STARTUP_ID=HISTSIZE=1000XDG_SESSION_COOKIE=0250277dd805498381e96c05d88068b0-1364679772.845276-1676152201WINDOWID=65011716GNOME_KEYRING_CONTROL=/home/raja/.cache/keyring-N3QoQ2IMSETTINGS_MODULE=noneQT_GRAPHICSSYSTEM_CHECKED=1USER=raja
etc.
j'espère que ça aide.
Dans bash en utilisant compgen:
compgen -v | while read line; do echo $line=${!line};done
Si vous voulez une variable d'environnement spécifique, plutôt que de les imprimer toutes avec printenv
, vous pouvez par exemple l'imprimer en faisant echo "$PWD"
La plupart des solutions ici n'impriment que des variables d'environnement, ou ont l'inconvénient que env ou (set-o posix; set) n'impriment pas les valeurs sous une forme facilement analysable (essayez d'imprimer la variable A=$ 'a\r\nb', elle a plusieurs lignes...).
Voici une fonction qui imprimera toutes les variables, une variable par ligne, sous la forme d'échappement POSIX (fonctionne correctement pour les variables de texte simples, ne fonctionne pas pour les tableaux):
function dump_vars { local VARNAME compgen -v | while read -r VARNAME; do printf "$VARNAME=%q\n" "${!VARNAME}" done}
Merci à @tmgoblin d'avoir souligné l'utilisation de compgen-v.
env est un POSIX 7 voies:
export asdf=qwerenv | grep asdf
Sortie d'échantillon:
asdf=qwer
Il ne montre que les variables exportées: les variables non exportées ne sont généralement pas considérées comme des "variables d'environnement".
Préfère ça à ça printenv
, qui n'est pas POSIX. Les deux semblent faire la même chose sans arguments: https://unix.stackexchange.com/questions/123473/what-is-the-difference-between-env-and-printenv
printenv répertorie uniquement les variables exportées,command+alt+$("\e"": complete-variable) listera toutes les variables.
printenv
affichera toutes les variables d'environnement globalesVous avez accepté une réponse incorrecte. “printenv” ne vous donne que les variables d’environnement. Si vous voulez vraiment que toutes les variables soient actuellement déclarées dans votre shell, utilisez “declare-p"ou” typeset-p".