- The shell stores information in the environment variables.
- Each shell has its own values for these variables.
printenv
# Prints name and value pairs for all the environment variables
# VARIABLE_NAME=VALUE
printenv | grep PATH
SHELL
- user's shell is bashPWD
- current working directoryHOME
- home directory for the current userPATH
- list of the directories searched in order, to find commands to be executed.- Current working directory can be put first in this path, easier to execute current working directory programs but can be used for attacks.
There are two types of environment variables: global and local.
- Global variables can be accessed by anything executed in that shell =
Environment Variables
# Create a global variable
export COUNT_GLOBAL=33
echo $COUNT_GLOBAL
33
# Unset a variable
unset COUNT_GLOBAL
- Local variables are valid only for the current shell (and not for sub-shells) =
Shell Variables
# Create a shell variable
COUNT_LOCAL=42
echo $COUNT_LOCAL
42
# $ is used to tell the shell that it is a variable
# Change shell (create sub-shell) and check the variable doesn't exist
bash
echo $COUNT_LOCAL
- When starting a new bash shell, the shell is configured using startup files.
- Interactive non-login shell - the type of shell opened by the Terminal
nano .bashrc
# There are various configurations for the shell and commands aliases
# Aliases can be added at the bottom of this file
alias name='COMMAND_VALUE'
- the alias uses the entire command enclosed in single quotes
- After adding an alias, a new shell must be created to make the alias work, or use the
source .bashrc
command in the same shell.
source .bashrc
# Re-runs all the commands in the .bashrc file in the current shell
- Using a shell other than bash, the startup file name will be different.