Articles

Linux Tutoriel de la commande Set Environment Variable

Le shell Bash est utilisé à diverses fins sous Linux. Comment puis-je personnaliser la variable d’environnement du shell sous les systèmes d’exploitation Linux ? Comment puis-je définir et afficher la variable d’environnement sous Linux ?
Vous pouvez utiliser les variables de l’interpréteur de commandes pour stocker des données, définir des options de configuration et personnaliser l’environnement de l’interpréteur de commandes sous Linux. Le shell par défaut est Bash sous Linux et peut être utilisé aux fins suivantes :

  1. Configurer l’apparence du shell.
  2. Configurer les paramètres du terminal en fonction du terminal que vous utilisez.
  3. Définir le chemin de recherche tel que JAVA_HOME, et ORACLE_HOME.
  4. Créer des variables d’environnement selon les besoins des programmes.
  5. Exécuter les commandes que vous voulez exécuter à chaque fois que vous vous connectez ou vous déconnectez.
  6. Mettre en place des alias et/ou une fonction shell pour automatiser des tâches afin d’économiser de la frappe et du temps.
  7. Changer l’invite bash.
  8. Définir les options du shell.

Deux types de variables shell

  • Variables d’environnement (GLOBAL) : Typiquement, les utilisateurs finaux ne devraient pas s’embêter avec les variables d’environnement car elles sont disponibles à l’échelle du système, et les sous-shells et les processus enfants peuvent y accéder. Dans certains scénarios, nous pouvons les modifier en fonction de nos besoins. Par exemple, nous définissons un chemin d’accès à l’échelle du système pour l’application JAVA ou PATH pour la recherche de binaires. Dans presque tous les cas, nous utilisons la commande export pour définir ou modifier les variables d’environnement.
  • Variables shell et définies par l’utilisateur (LOCAL) : Comme le nom l’indique, elles sont définies par les utilisateurs et s’appliquent actuellement à la session shell en cours.

Vous pouvez utiliser les commandes suivantes pour afficher et configurer l’environnement.

Afficher les variables d’environnement actuelles sur Linux

La commande printenv affiche toutes ou les variables d’environnement données. Ouvrez l’invite du terminal, puis tapez:
printenv
printenv VAR_NAME
printenv PS1
printenv ORACLE_HOME
printenv JAVA_HOME
# use the grep command/egrep command to filter out variables #
printenv | grep APP_HOME
printenv | egrep 'APP_HOME|DOCKER_HOME|NIX_BACKUP_HOST'

commande env

La commande env exécute une commande Linux avec un environnement modifié. La syntaxe est la suivante :

env VAR_NAME=VALUEenv VAR_NAME=VALUE CMD1 ARG1env VAR_NAME=VALUE CMD1 ARG1

Veuillez noter que si aucun nom de commande n’est spécifié à la suite des spécifications de l’environnement, l’environnement résultant est affiché à l’écran. Cela revient à spécifier la commande printenv comme indiqué précédemment. Par exemple :

envenv | moreenv | grep 'PS1'

Comment définir et lister les variables d’environnement sous Linux en utilisant la commande set

La commande env/printenv affiche uniquement les variables d’environnement du shell Linux. Et si vous avez besoin de voir une liste de toutes les variables, y compris les fonctions de l’interpréteur de commandes, de l’environnement, de l’interpréteur de commandes défini par l’utilisateur ? Essayez la commande set suivante pour imprimer les variables d’environnement:
set
set | grep BASH

Voici ce que nous voyons:

BASH=/bin/bashBASH_ARGC=()BASH_ARGV=()BASH_LINENO=()BASH_SOURCE=()BASH_VERSINFO=(="3" ="2" ="25" ="1" ="release" ="x86_64-redhat-linux-gnu")BASH_VERSION='3.2.25(1)-release'COLORS=/etc/DIR_COLORS.xtermCOLUMNS=237CVS_RSH=sshDIRSTACK=()EUID=0GROUPS=()G_BROKEN_FILENAMES=1HISTFILE=/root/.bash_historyHISTFILESIZE=1000HISTSIZE=1000HOME=/rootHOSTNAME=server3.www.p.cyberciti.bizHOSTTYPE=x86_64IFS=$' \t\n'INPUTRC=/etc/inputrcLANG=en_US.UTF-8LESSOPEN='|/usr/bin/lesspipe.sh %s'LINES=64LOGNAME=rootLS_COLORS='no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:'MACHTYPE=x86_64-redhat-linux-gnuMAIL=/var/spool/mail/rootMAILCHECK=60OPTERR=1OPTIND=1OSTYPE=linux-gnuPATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/binPIPESTATUS=(="0")PPID=35469PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\007"'PS1='\$ 'PS2='> 'PS4='+ 'PWD=/rootSHELL=/bin/bashSHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitorSHLVL=1SSH_CLIENT='10.1.3.116 44212 22'SSH_CONNECTION='10.1.3.116 44212 10.10.29.68 22'SSH_TTY=/dev/pts/0TERM=xtermUID=0USER=root_=setconsoletype=ptytmpid=0genpasswd () { local l=$1; && l=16; tr -dc A-Za-z0-9_ < /dev/urandom | head -c ${l} | xargs}xrpm () { && ( rpm2cpio "$1" | cpio -idmv )}

Le $PATH définissait le chemin de recherche des commandes. Il s’agit d’une liste de répertoires, séparés par deux points, dans lesquels le shell recherche des commandes. Le $PS1 définit vos paramètres d’invite.Consultez la liste de toutes les variables de l’interpréteur de commandes couramment utilisées pour plus d’informations. Vous pouvez afficher la valeur d’une variable à l’aide de la commande printf ou de la commande echo :

echo "$HOME"echo "$PS1"printf "%s\n" "$HOME"

Sorties de la dernière commande affichant l’emplacement de mon répertoire personnel défini par la variable d’environnement $HOME sous Linux :
/home/vivek

Définir les variables d’environnement sur la commande Linux

La syntaxe est assez simple :

# A variable may be assigned to by a statement of the form #VAR_NAME=valueVAR_STR="this is a string"VAR_NUM_TRY=5MY_OS="Ubuntu"DOMAIN_NAME="cyberciti.biz|nixcraft.com" # If value is not given, the variable is assigned the null string.is_backup_failed= # Empty variable sql_tables="" # Boolean (true or false)is_job_failed=false

Les points clés à retenir lors de la création ou de la configuration de variables d’environnement sur Linux lors de l’utilisation de bash:

  1. Ne pas mettre d’espace autour du symbole =.
  2. Comme les commandes Linux, les noms des variables bash sont sensibles à la casse. Typiquement, nous définissons les variables d’environnement dans des noms en MAJUSCULES uniquement et sont considérés comme une meilleure pratique, mais ce n’est pas obligatoire.
  3. Par défaut, la portée des variables Linux est LOCALE. Nous pouvons les rendre GLOBALES (ou variable d’environnement) en utilisant la commande export.

Imprimons les valeurs de nos variables VAR_NUM, VAR_NUM, MY_OS, et d’autres variables définies précédemment en utilisant diverses commandes :

echo "$VAR_NUM"echo "$MY_OS"printf "%s\n" "$DOMAIN_NAME"echo $is_backup_failed

Désinstallation / suppression de variables et de valeurs de l’interpréteur de commandes

Nous pouvons désactiver les valeurs et les attributs des variables et des fonctions de l’interpréteur de commandes en utilisant la commande unset :

unset var_nameunset MY_OSunset is_backup_failed

Comment définir des variables d’environnement en lecture seule sous Linux lors de l’utilisation de bash

Nous utilisons la commande readonly comme suit :

readonly var=valuereadonly PI=3.14export PI # Make it enviorment/global var echo "$PI"PI=4.2bash -c "echo $PI"unset PI
readonly var=valuereadonly PI=3.14export PI # Make it enviorment/global var echo "$PI"PI=4.2bash -c "echo $PI"unset PI

.

Commande Linux Bash set up read only varible

Setting up unchangeable read-only bash variable sur mon bureau Ubuntu Linux

Accéder aux variables définies par l’utilisateur dans les sous-shells et autres instances

Démarrons une nouvelle instance de bash, entrons et essayons d’imprimer des valeurs comme suit :

# 1. Define mysql_bak_dest and _mysql_dump variables mysql_bak_dest="/aws/efs"_mysql_dump="/usr/bin/mysqldump" # 2. Print 'mysql_bak_dest' and '_mysql_dump' variablesecho "$mysql_bak_dest" echo "$_mysql_dump" # 3. start a new shell bash # 4. Can you print 'mysql_bak_dest' and '_mysql_dump' variables ?echo "$mysql_bak_dest" echo "$_mysql_dump" # 5. Exit and go back parent shell session and print 'mysql_bak_dest' and '_mysql_dump' variablesexit echo "$mysql_bak_dest" echo "$_mysql_dump" # 6. Can you use the printenv to print 'mysql_bak_dest', '_mysql_dump', 'HOME' variable ?printenv mysql_bak_destprintenv $_mysql_dumpprintenv HOME

.How to Set and List Environment Variables in LinuxComment définir et lister les variables d’environnement sous Linux

Définir et lister les variables LOCALES d’environnement sous Linux

À l’étape # 4, la sortie est vide. Mais pourquoi ? Cela signifie que les variables que nous avons définies ne sont pas des variables d’environnement, et qu’elles sont LOCALES. Dans un sous-shell et d’autres nouvelles instances du shell, les valeurs des variables ne sont pas exportées. Par conséquent, nous utilisons la commande export pour les rendre GLOBALES ou variables d’environnement. Par exemple :

export var=value# make them GLOBAL or environment variable export mysql_bak_dest="/aws/efs"export _mysql_dump="/usr/bin/mysqldump"echo "$mysql_bak_dest" echo "$_mysql_dump"# Start a new sub-shell or instance by tping the 'bash' and try to access GLOBAL or environment vars bash -c "echo $mysql_bak_dest; echo $_mysql_dump"

.

Comment définir les variables d'environnement sous Linux

Définir les variables d’environnement (GLOBAL) variables d’environnement (GLOBAL) sous Linux en utilisant export pour la session bash de l’utilisateur actuel et exporté

Commande export

Vous pouvez modifier chaque variable d’environnement ou de système en utilisant la commande export. Définissez la variable d’environnement PATH pour inclure le répertoire où vous avez installé le répertoire bin avec les scripts perl et shell :

export PATH=${PATH}:/home/vivek/bin

OR

.

export PATH=${PATH}:${HOME}/bin

Pour définir la variable d’environnement JAVA_HOME sur le répertoire où vous avez installé l’application J2SE SDK, entrez :

export PATH=${PATH}:/usr/java/jdk1.5.0_07/bin

Vous pouvez définir plusieurs chemins comme suit :

export ANT_HOME=/path/to/ant/direxport PATH=${PATH}:${ANT_HOME}/bin:${JAVA_HOME}/bin

Une note à propos de l’ env et la configuration des variables

Premièrement, définissez la variable NFS_ROOT sur /efs/ec2/wwwdata et exécutez le script perl appelé check_for_files.pl
env NFS_ROOT=/efs/ec2/wwwdata check_for_files.pl
Dans cet exemple, exécutez ‘vim’ avec l’environnement contenant ‘LOGNAME=nixcraft’,et ‘DISPLAY=desktop2:0’:
env - DISPLAY=desktop2:0 LOGNAME=nixcraft vim /path/to/file
Set FOO à bar et imprimez-le avec perl :
env - FOO=bar /usr/bin/perl -e 'print "$FOO \n"'
Nous ne pouvons pas voir $FOO depuis le shell car il n’a été défini que pour le code perl :
echo "$FOO"

Comment faire pour que tous les paramètres des variables d’environnement soient permanents/persistants sous Linux ?

Le fichier ~/.bash_profile ($HOME/.bash_profile) ou ~/.profile est exécuté lorsque vous vous connectez en utilisant la console ou à distance en utilisant ssh. Tapez la commande suivante pour modifier le fichier ~/.bash_profile, entrez:
$ vi ~/.bash_profile
Ajouter les paramètres $PATH, entrez:
export PATH=${PATH}:${HOME}/bin
Enregistrer et fermer le fichier.

Définir le nom de l’instance IBM DB2

Tapez la commande suivante :

export DB2INSTANCE=prod_sales

A Note About /etc/profile File

/etc/profile ou /etc/profile.d/ contient l’environnement général du système Linux et les programmes de démarrage. Il est utilisé par tous les utilisateurs avec le shell bash, ksh, sh. Il est généralement utilisé pour définir la variable PATH, les limites de l’utilisateur et d’autres paramètres pour l’utilisateur. Il ne fonctionne que pour le shell de connexion. Si vous vouliez faire de grands changements ou des changements spécifiques à une application, utilisez le répertoire /etc/profile.d/ comme expliqué ici et ici.
Voir les ressources suivantes:

  • Personnaliser les environnements de l’interpréteur de commandes bash à partir du wiki Linux shell scripting.
  • UNIX Set Environment Variable

.

d/etc/profile

.

File Purpose Exemples (utiliser le cat pour visualiser un fichier)
/etc/environment Configurer les variables d’environnement à l’échelle du système.variables d’environnement à l’échelle du système.
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
L’ensemble du système Linux .fichier de profil pour l’interpréteur de commandes Bourne (sh) et les interpréteurs de commandes compatibles avec Bourne tels que bash, ksh, ash et autres.
if ; then if && ; then # The file bash.bashrc already sets the default PS1. # PS1='\h:\w\$ ' if ; then . /etc/bash.bashrc fi else if ; then PS1='# ' else PS1='$ ' fi fifi if ; then for i in /etc/profile.d/*.sh; do if ; then . $i fi done unset ifi
/etc/profile.d/ Toute la grande personnalisation de l’environnement spécifique à l’utilisateur et au site doit être placée dans ce répertoire. Ceci est également valable pour tout le système. $ ls -l /etc/profile.d/
$ cat /etc/profile.d/gawk.csh

gawkpath_default () {unset AWKPATHexport AWKPATH=`gawk 'BEGIN {print ENVIRON}'`} gawkpath_prepend () { && AWKPATH=`gawk 'BEGIN {print ENVIRON}'`export AWKPATH="$*:$AWKPATH"} gawkpath_append () { && AWKPATH=`gawk 'BEGIN {print ENVIRON}'`export AWKPATH="$AWKPATH:$*"} gawklibpath_default () {unset AWKLIBPATHexport AWKLIBPATH=`gawk 'BEGIN {print ENVIRON}'`} gawklibpath_prepend () { && \AWKLIBPATH=`gawk 'BEGIN {print ENVIRON}'`export AWKLIBPATH="$*:$AWKLIBPATH"} gawklibpath_append () { && \AWKLIBPATH=`gawk 'BEGIN {print ENVIRON}'`export AWKLIBPATH="$AWKLIBPATH:$*"}
$HOME/.bash_profile Le fichier d’initialisation personnel, exécuté pour les shells de connexion.
/usr/bin/keychain /root/.ssh/id_ed25519source /root/.keychain/$HOSTNAME-sh
$HOME~/.bashrc Le fichier de démarrage individuel par shell interactif.
PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ 'umask 022export LS_OPTIONS='--color=auto'export PATH="$HOME:/home/vivek/bin"eval "`dircolors`"alias ls='ls $LS_OPTIONS'alias ll='ls $LS_OPTIONS -l'alias l='ls $LS_OPTIONS -lA'alias rm='rm -i'alias cp='cp -i'alias mv='mv -i'
$HOME/.bash_logout Le fichier de nettoyage individuel du shell de connexion, exécuté lorsqu’un shell de connexion se termine
if ; then && /usr/bin/clear_console -qfi

Résumé

Vous avez appris à définir et à lister les variables d’environnement sous Linux en utilisant bash :

.

Commande Description Exemple(s)
commandedeclare Déclarer des variables bash et leur donner des attributs tels que integer, tableaux indexés, tableaux associatifs, readonly et ainsi de suite Si aucune variable ou option n’est donnée à déclarer, il affichera les attributs et les valeurs de tous (variables identiques à celles de l’ensemble courant) Voir ‘help declare’

.

declaredeclare | grep BASHdeclare | grep function_name# Make sure str_size have the 'integer' attribute declare -i db_size=20echo $db_size # will print 20db_size="foo"echo $db_size # will print 0 # Set max size for linux container and make it read-only too declare -ir MAX_MEM_FOR_CONTAINER=4096
Commande env Exécuter un programme dans un environnement modifié. Imprimez toutes les variables d’environnement.
envenv | moreenv | grep SERVER_ROOT
Commande d’exportation Commande qui définit les variables d’environnement (GLOBAL) et exporte l’environnement vers un sub-shell ou d’autres instances. export NFS_ROOT=/aws/ec2/efs
Commande printtenv Imprimer tout ou partie (donnée) des variables d’environnement sur Linux.
printenv SHELLprintenvprintenv | egrep 'SHELL|PS1|PS2'
Commande readonly Marquer les variables de l’interpréteur de commandes comme non modifiables c’est-à-dire. lecture seule ou variable d’interpréteur de commandes constante
readonly K_VERSION="1.9.52"
Commandeset Set ou unset des valeurs des options d’interpréteur de commandes et des paramètres positionnels. Affiche également toutes les variables d’environnement. Voir ‘aide set’

set | moreMY_DOMAINS="cyberciti.biz:nixcraft.com:cyberciti.com"IFS=':'set -- $MY_DOMAINSecho "$1"echo "$2"echo "$3"for d in $@do echo "Working on $d ..."done
Commande unset Supprime les variables du shell et de l’environnement. Toutes les variables ne peuvent pas être unset. Par exemple, les variables en lecture seule ne peuvent pas être unset. unset FOO

🐧 Obtenez les derniers tutoriels sur Linux, Open Source & DevOps via le flux RSS ou la newsletter hebdomadaire par email.
🐧 23 commentaires jusqu’à présent…. en ajouter un ↓

.

.

Catégorie Liste des commandes Unix et Linux
Gestion des fichiers cat
Firewall Alpine Awall – CentOS 8 – OpenSUSE – RHEL 8 – Ubuntu 16.04 – Ubuntu 18.04 – Ubuntu 20.04
Utilitaires réseau dig – host – ip – nmap
OpenVPN CentOS 7 – CentOS 8 – Debian 10 – Debian 8/9 – Ubuntu 18.04 – Ubuntu 20.04
Gestionnaire de paquets apk – apt
Gestion des processus bg – chroot – cron – disown – fg – jobs – killall – kill – pidof. – pstree – pwdx – time
Recherche grep – whereis – which.
Informations sur l’utilisateur groupes – id – lastcomm – last – lid/libuser-.lid – logname – members – users – whoami – who – w
WireGuard VPN Alpine – CentOS 8 – Debian 10 – Firewall – Ubuntu 20.04

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *