HackTricks
Searchโ€ฆ
๐Ÿ‘ฝ
Network Services Pentesting
Linux Environment Variables
Support HackTricks and get benefits!

Global variables

The global variables will be inherited by child processes.
You can create a global variable for your current session doing:
export MYGLOBAL="hello world"
echo $MYGLOBAL #Prints: hello world
This variable will be accessible by your current sessions and its child processes.
You can remove a variable doing:
unset MYGLOBAL

Local variables

The local variables can only be accessed by the current shell/script.
LOCAL="my local"
echo $LOCAL
unset LOCAL

List current variables

set
env
printenv
cat /proc/$/environ
cat /proc/`python -c "import os; print(os.getppid())"`/environ

Persistent Environment variables

Files that affect behavior of every user:

  • /etc/bash.bashrc: This file is read whenever an interactive shell is started (normal terminal) and all the commands specified in here are executed.
  • /etc/profile and /etc/profile.d/*: This file is read every time a user logs in. Thus all the commands executed in here will execute only once at the time of user logging in.
    • **Example: **
      /etc/profile.d/somescript.sh
      #!/bin/bash
      TEST=$(cat /var/somefile)
      export $TEST

Files that affect behavior for only a specific user:

  • ~/.bashrc: This file behaves the same way /etc/bash.bashrc file works but it is executed only for a specific user. If you want to create an environment for yourself go ahead and modify or create this file in your home directory.
  • ~/.profile, ~/.bash_profile, ~/.bash_login: These files are same as /etc/profile. The difference comes in the way it is executed. This file is executed only when a user in whose home directory this file exists, logs in.
Extracted from: here and hereโ€‹

Common variables

  • DISPLAY โ€“ the display used by X. This variable is usually set to :0.0, which means the first display on the current computer.
  • EDITOR โ€“ the userโ€™s preferred text editor.
  • HISTFILESIZE โ€“ the maximum number of lines contained in the history file.
  • **HISTSIZE - **Number of lines added to the history file when the user finish his session
  • HOME โ€“ your home directory.
  • HOSTNAME โ€“ the hostname of the computer.
  • LANG โ€“ your current language.
  • MAIL โ€“ the location of the userโ€™s mail spool. Usually /var/spool/mail/USER.
  • MANPATH โ€“ the list of directories to search for manual pages.
  • OSTYPE โ€“ the type of operating system.
  • PS1 โ€“ the default prompt in bash.
  • **PATH - **stores the path of all the directories which holds binary files you want to execute just by specifying the name of the file and not by relative or absolute path.
  • PWD โ€“ the current working directory.
  • SHELL โ€“ the path to the current command shell (for example, /bin/bash).
  • TERM โ€“ the current terminal type (for example, xterm).
  • TZ โ€“ your time zone.
  • USER โ€“ your current username.

Interesting variables for hacking

HISTFILESIZE

Change the value of this variable to 0, so when you end your session the history file (~/.bash_history) will be deleted.
export HISTFILESIZE=0

HISTSIZE

Change the value of this variable to 0, so when you end your session any command will be added to the history file (~/.bash_history).
export HISTSIZE=0

http_proxy

The processes will use the proxy declared here to connect to internet through http.
export http_proxy="http://10.10.10.10:8080"

https_proxy

The processes will use the proxy declared here to connect to internet through https.
export https_proxy="http://10.10.10.10:8080"

PS1

Change how your prompt looks.
**I have created **this one (based on another, read the code).
Root:
Regular user:
One, two and three backgrounded jobs:
One background job, one stopped and last command didn't finish correctly:
Support HackTricks and get benefits!