Tutorial del comando printenv de Linux para principiantes (con ejemplos)

Las variables de entorno desempeñan un papel importante en Linux. La mayoría de los programas, tanto los basados en la línea de comandos como los basados en la interfaz gráfica de usuario, se ocupan de las variables de entorno de una forma u otra. Así que, naturalmente, hay herramientas que te permiten acceder a las variables de entorno desde la línea de comandos.

Una de estas herramientas es printenv. En este tutorial, hablaremos del comando printenv utilizando 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 Ubuntu 20.04 LTS.

El comando printenv de Linux

El comando printenv en Linux te ofrece la posibilidad de ver todo o parte del entorno. A continuación se muestra su sintaxis:

printenv [OPTION]... [VARIABLE]...

Y así es como lo define la página man de la herramienta:

Print the values of the specified environment VARIABLE(s). If no VARIABLE is specified, print 
name and value pairs for them all.

A continuación se presentan algunos ejemplos de estilo Q&A que deberían darte una mejor idea de cómo funciona el comando printenv.

Q1. ¿Cómo se utiliza printenv?

El uso básico es bastante sencillo. Todo lo que tienes que hacer es ejecutar printenv sin ningún argumento.

printenv

A continuación se muestra 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
XMODIFIERS=@im=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

Así puedes ver que casi todas las variables de entorno establecidas en mi sistema se produjeron en la salida.

Q2. ¿Cómo hacer que printenv muestre sólo información selectiva?

Supongamos que quieres que printenv muestre en la salida sólo los detalles relacionados con una variable de entorno específica, entonces todo lo que tienes que hacer es pasar el nombre de esa variable como entrada al comando.

Aquí tienes un ejemplo:

printenv SHELL

Y aquí está la salida producida por este comando:

/bin/bash

Por supuesto, puedes añadir más variables a la lista de entrada. Por ejemplo, el siguiente comando

printenv SHELL HOME

produce la salida que se muestra a continuación:

/bin/bash
/home/himanshu

Q3. ¿Cómo hacer que printenv utilice NUL en lugar de una nueva línea?

Por defecto, el comando printenv utiliza newline como carácter de terminación entre las entradas de salida. Sin embargo, si quieres, puedes hacer que la herramienta utilice NUL como terminador en su lugar.

Para ello, tendrás que utilizar la opción de línea de comandos –null. A continuación se muestra un ejemplo:

printenv --null SHELL HOME

Y aquí tienes una captura de pantalla de la salida producida en comparación con el uso de printenv sin la opción –null:

Conclusión

Si tu trabajo en la línea de comandos de Linux implica tratar con variables de entorno, el comando printenv es una herramienta importante que debes recordar. En este tutorial hemos tratado la mayoría de las opciones que ofrece esta herramienta. Una vez que hayas terminado de practicarlas (la curva de aprendizaje no es muy pronunciada, así que no debería llevarte tiempo), puedes dirigirte a lapágina man de printenv para aprender más sobre esta utilidad de línea de comandos.

También te podría gustar...