Shell Variables Flashcards
Shell variables are assigned using an..?
A=apple syntax
Variables are examined (“dereferenced”) with the …?
$ character, as in echo $A
At the kernel level, every process has a collection of environment variables, which are inherited by …?
child processes.
The export command converts a shell variable into an…?
environment variable.
The set and env commands list…?
shell variables and environment variables, respectively.
The bash shell allows users to …?
set and reference shell variables.
A shell variable is simply a …?
named value that the shell remembers.
Shell variables can be used in…?
commands and shell scripts and can also be referenced by programs as configuration options.
(For example, the mutt email client runs an external editor when composing a message. By default this editor is vi. However, before running vi it will check to see if a variable called EDITOR has been set. If it has, then the command defined by EDITOR is used instead of vi. Most programs that launch external editors work the same way.)
There are two types of shell variables…?
local variables and environment variables.
A local variable exists only within…?
the shell which it is created.
Environment variables are inherited by…?
child shells such as when a graphical terminal is launched after logging in.
How to set a local variable…?
A = apple.
(don’t place any spaces on either side of the = sign. Now the shell will “hang on” to this association for as long as the shell exists (or until it is explicitly unset,)
Whenever prince would like to use the value “apple”, he can use use the variable A instead, preceding the variable with a…?
dollar sign ($), as in echo $A
This is called dereferencing the variable A.
The variable can be used anywhere on the command line (or in shell scripts). What if prince, waxing poetic, decided to write a few lines about apples, which he wanted to save in a file called ode_to_apple.txt. The following line could get him started…..?
[prince@station prince]$ echo “Oh, I like them squishy”»_space; ode_to_$A.txt
[prince@station prince]$ ls
ode_to_apple.txt
When the bash shell examined the command line, it replaced $A with apple. These are the basics of shell variables. Variables are established, and set, with a VAR=value syntax, and dereferenced with a $VAR syntax.
What can be used for variable names?
Variable names can be any string of alphanumeric characters (A-Z, a-z, 0-9), and the underscore (_), but cannot start with a number
Shell variables are case…?
sensitive.
[prince@station prince]$ B=banana
[prince@station prince]$ echo $B is my favorite fruit
banana is my favorite fruit
[prince@station prince]$ echo $b is my favorite fruit
is my favorite fruit
What can be a variable’s value?
Anything
When assigning variables, the syntax is name=value, with no spaces. What if prince wanted the variable FRUIT to resolve to the phrase mushy bananas?
[prince@station prince]$ FRUIT=mushy bananas
-bash: bananas: command not found
We have stumbled into an advanced syntax for setting variables, namely name=value command, which sets the variable name only for the execution of the specified command. The bash shell dutifully set the variable FRUIT to the value mushy, and went to execute the command bananas, with expectable results. All of this is not the important bit. The important bit is that if you want to set a variable to a value which contains spaces, you must include the value in quotes.
[prince@station prince]$ FRUIT=”mushy bananas”
[prince@station prince]$ echo $FRUIT is my favorite fruit
mushy bananas is my favorite fruit
With this modification, prince gets the correct behavior from the bash shell, if not correct English grammar.
When dereferencing variables, the variable name can be marked using…?
braces {}, if need be.
see https://academy.redhat.com/courses/rha030-6.1/rha030_bash_shvar.html for example.