Tutorial del comando printenv de Linux para principiantes (con ejemplos)
Las variables de entorno juegan un papel importante en Linux. La mayoría de los programas, ya sean basados en línea de comandos o basados en GUI, manejan las variables de entorno de una forma u otra. Naturalmente, existen herramientas que le permiten acceder a las variables de entorno desde la línea de comandos.
Una de esas herramientas es imprimirv. En este tutorial, discutiremos el comando printenv usando algunos ejemplos fáciles de entender. Pero antes de hacerlo, vale la pena mencionar que todos los ejemplos aquí se han probado en una máquina con Ubuntu 20.04 LTS.
Comando printenv de Linux
El comando printenv en Linux le brinda la capacidad de ver todo o parte del entorno. A continuación se muestra su sintaxis:
printenv [OPTION]... [VARIABLE]...
Y así es como la página de manual de la herramienta lo define:
Print the values of the specified environment VARIABLE(s). If no VARIABLE is specified, print name and value pairs for them all.
Los siguientes son algunos ejemplos de estilo de preguntas y respuestas que le darán una mejor idea de cómo funciona el comando printenv.
Q1. ¿Cómo usar printenv?
El uso básico es bastante fácil. Todo lo que tiene que hacer es ejecutar printenv sin argumentos.
printenv
La siguiente es la salida producida en mi sistema:
CLUTTER_IM_MODULE=xim LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36: LESSCLOSE=/usr/bin/lesspipe %s %s XDG_MENU_PREFIX=gnome- LANG=en_IN DISPLAY=:0 GNOME_SHELL_SESSION_MODE=ubuntu COLORTERM=truecolor USERNAME=himanshu XDG_VTNR=2 SSH_AUTH_SOCK=/run/user/1000/keyring/ssh MANDATORY_PATH=/usr/share/gconf/ubuntu.mandatory.path XDG_SESSION_ID=2 USER=himanshu DESKTOP_SESSION=ubuntu QT4_IM_MODULE=xim TEXTDOMAINDIR=/usr/share/locale/ GNOME_TERMINAL_SCREEN=/org/gnome/Terminal/screen/44c42800_9a68_408d_8539_7a0e414b7986 DEFAULTS_PATH=/usr/share/gconf/ubuntu.default.path PWD=/home/himanshu HOME=/home/himanshu TEXTDOMAIN=im-config SSH_AGENT_PID=1918 QT_ACCESSIBILITY=1 XDG_SESSION_TYPE=x11 XDG_DATA_DIRS=/usr/share/ubuntu:/usr/local/share:/usr/share:/var/lib/snapd/desktop XDG_SESSION_DESKTOP=ubuntu GJS_DEBUG_OUTPUT=stderr GTK_MODULES=gail:atk-bridge WINDOWPATH=2 TERM=xterm-256color SHELL=/bin/bash VTE_VERSION=5201 QT_IM_MODULE=xim [email protected]=ibus IM_CONFIG_PHASE=2 XDG_CURRENT_DESKTOP=ubuntu:GNOME GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1 GNOME_TERMINAL_SERVICE=:1.61 XDG_SEAT=seat0 SHLVL=1 GDMSESSION=ubuntu GNOME_DESKTOP_SESSION_ID=this-is-deprecated LOGNAME=himanshu DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus XDG_RUNTIME_DIR=/run/user/1000 XAUTHORITY=/run/user/1000/gdm/Xauthority XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin GJS_DEBUG_TOPICS=JS ERROR;JS LOG SESSION_MANAGER=local/himanshu:@/tmp/.ICE-unix/1823,unix/himanshu:/tmp/.ICE-unix/1823 LESSOPEN=| /usr/bin/lesspipe %s GTK_IM_MODULE=ibus _=/usr/bin/printenv
Entonces puede ver que casi todas las variables de entorno configuradas en mi sistema se produjeron en la salida.
Q2. ¿Cómo hacer que printenv muestre solo información seleccionada?
Suponga que desea que printenv muestre detalles relacionados solo con una variable de entorno específica en la salida, entonces todo lo que tiene que hacer es pasar el nombre de esa variable como entrada al comando.
Aquí hay un ejemplo:
printenv SHELL
Y aquí está la salida producida por este comando:
/bin/bash
Por supuesto, puede agregar más variables a la lista de entrada. Por ejemplo, el siguiente comando:
printenv SHELL HOME
produjo la salida que se muestra a continuación:
/bin/bash /home/himanshu
Q3. ¿Cómo hacer que printenv use NUL en lugar de nueva línea?
De forma predeterminada, el comando printenv usa nueva línea como carácter de terminación entre las entradas de salida. Sin embargo, si lo desea, puede hacer que la herramienta utilice NUL como terminador.
Para esto, deberá usar la opción de línea de comando –null. El siguiente es un ejemplo:
printenv --null SHELL HOME
Y aquí hay una captura de pantalla de la salida producida en comparación con el uso de printenv sin la opción –null:
Conclusión
Si su trabajo de línea de comandos de Linux implica lidiar con variables de entorno, el comando printenv es una herramienta importante para recordar. Aquí, en este tutorial, hemos discutido la mayoría de las opciones que ofrece esta herramienta. Una vez que haya terminado de practicar estos (la curva de aprendizaje no es pronunciada, por lo que no debería tomar tiempo), puede dirigirse a printenv página man para obtener más información sobre esta utilidad de línea de comandos.