Környezeti változók Linux alatt

Beállítani egy környezeti változót az export paranccsal lehet.

gvamosi@gergo1:~$ export KERESS_PENZT_LINUXSZAL=gvamosi.worpress.com

Kiírni egy környezeti változó értékét pedig mi sem egyszerűbb.

gvamosi@gergo1:~$ printenv KERESS_PENZT_LINUXSZAL
gvamosi.worpress.com
gvamosi@gergo1:~$ echo $KERESS_PENZT_LINUXSZAL
gvamosi.worpress.com

Az összes környezeti változót a set, env vagy printenv paranccsal kérdezhetjük le.

gvamosi@gergo1:~$ printenv | sort
COLORTERM=truecolor
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
DESKTOP_SESSION=gnome
DISPLAY=:0
GDM_LANG=en_US.UTF-8
GDMSESSION=gnome
GJS_DEBUG_OUTPUT=stderr
GJS_DEBUG_TOPICS=JS ERROR;JS LOG
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
GNOME_TERMINAL_SCREEN=/org/gnome/Terminal/screen/12b6ca2c_41b1_4c0d_81ab_573afc40b82a
GNOME_TERMINAL_SERVICE=:1.91
GTK_MODULES=gail:atk-bridge
HOME=/home/gvamosi
KERESS_PENZT_LINUXSZAL=gvamosi.worpress.com
LANG=en_US.UTF-8
LOGNAME=gvamosi
OLDPWD=/home/gvamosi/Documents/irasok/Andreas_Witt-Egy_kidobott_ferfi_elete-20190418-Nagycsutortok
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:.
PWD=/home/gvamosi
QT_ACCESSIBILITY=1
QT_IM_MODULE=ibus
SESSION_MANAGER=local/gergo1:@/tmp/.ICE-unix/1075,unix/gergo1:/tmp/.ICE-unix/1075
SHELL=/bin/bash
SHLVL=0
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
TERM=xterm-256color
USER=gvamosi
USERNAME=gvamosi
_=/usr/bin/printenv
VTE_VERSION=5402
WAYLAND_DISPLAY=wayland-0
XDG_CURRENT_DESKTOP=GNOME
XDG_MENU_PREFIX=gnome-
XDG_RUNTIME_DIR=/run/user/1000
XDG_SEAT=seat0
XDG_SESSION_CLASS=user
XDG_SESSION_DESKTOP=gnome
XDG_SESSION_ID=2
XDG_SESSION_TYPE=wayland
XDG_VTNR=2
XMODIFIERS=@im=ibus

Egy környezeti változót az unset paranccsal “törölhetünk”.

Magyarázat néhány környezeti változóhoz:

USER: az aktuáisan bejelentkezett felhasználó
HOME: a bejelentkezett felhasználó home könyvtára
SHELL: az aktuális felhasználó shell-je
LOGNAME: az aktuális felhasználó neve
PATH: a keresési útvonal parancsok végrehajtásakor (TAB billentyű)
LANG: az aktuális nyelvi beállítás
TERM: az aktuális terminálemuláció

Bővebben az alábbi weboldalon lehet a környezeti változókról olvasni.

https://linuxize.com/post/how-to-set-and-list-environment-variables-in-linux/

Prompt – PS1 környezeti változó – mit is jelent a terminál ablakban vagy szöveges terminálban megjelenő gvamosi@gergo1:~$ prompt jel?

Az egész rendszerre érvényes, belépéskor automatikusan végrehajtott parancsok és beállítások helye a /etc/profile, ami rendszergazdaként, vagyis root user-ként (felhasználóként) szerkeszthető. Csak a prompt-beállítás szempontjából fontos részeket idézem.

gvamosi@gergo1:~$ cat /etc/profile

if [ "${PS1-}" ]; then
if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='\h:\w\$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ "id -u" -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi

Nézzük meg a PS1 környezeti változó beállítását, ami nem más, mint a prompt jel. 🙂

Értelmezés: ha a PS1 környezeti változó beállított azaz definiált (set -u parancccsal ekvivalens a szintaxis, a set-ről a későbbiekben lesz szó), továbbá a BASH környezeti változó is létezik és értéke nem /bin/sh, akkor végrehajtja a /etc/bash.bashrc file-ban foglaltakat (a . <script-név> ekvivalens a source <script-név> jelöléssel) Nézzük csak meg ezt a file-t! Csak a prompt-beállítás szempontjából fontos részeket idézem.

gvamosi@gergo1:~$ cat /etc/bash.bashrc
# If not running interactively, don't do anything
[ -z "$PS1" ] && return

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi

# set a fancy prompt (non-color, overwrite the one in /etc/profile)
# but only if not SUDOing and have SUDO_PS1 set; then assume smart user.
if ! [ -n "${SUDO_USER}" -a -n "${SUDO_PS1}" ]; then
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi

Ez a szkript-rész először megnézi, hogy nem zérus-e a PS1 környezeti változó, azután megpróbálja beállítani a debian_chroot változót – a chroot-ról majd később -, végül pedig beállítja a prompt-ot. Ha van chroot változó, akkor (ez_a_chroot) kezdetű, amúgy pedig \u – felhasználónév @ \h – hosztnév : \w munkakönyvtár és a végén egy dollárjel és egy “space” – üres karakter. 🙂

gvamosi@gergo1:~$

A ~ jel nem mást jelöl, mint a home könyvtárat. A pwd parancs mindig kiírja az aktuális könyvtárat.

gvamosi@gergo1:~$ pwd
/home/gvamosi

Az összes környezeti változót amúgy a set paranccsal kérdezhetjük le.

gvamosi@gergo1:~$ set | grep PS1
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

A grep parancsról és a | pipe jelről pedig majd a későbbiekben írok. 🙂