🔍 See Original Question on Ask Ubuntu ⧉ 🔗
What is the purpose of the special parameter "_" (single underscore) in environment?
December 27, 2019
Edited: June 12, 2020
December 3, 2023
Copy to clipboard: false
/assets/js/search.js will update text..
I’m trying to understand how the environment variable
_ can be used. Below is an example of using it:
$ echo $_ $ echo $_ echo $ ls non-existant-filename ls: cannot access 'non-existant-filename': No such file or directory $ echo $_ non-existant-filename
- First it returns nothing
- Second it returns the last command used
- Last it returns the last parameter used
This might be a handy variable for bash scripts but only if it’s function is fully understood.
Some useful applications of
I found some useful applications of
_ contains the last filename you can recycle
In this example
_ is used to keep the last filename which you can reuse in subsequent commands without retying it.
$ ll ~/python/scroll1.py -rwxrwxrwx 1 rick rick 2384 Dec 27 09:15 /home/rick/python/scroll1.py* $ $_ # The python program ~/python/scroll1.py is executed $ cat $_ #!/usr/bin/env python # -*- coding: utf-8 -*- (... SNIP ... remaining contents of ~/python/scroll1.py appears on screen)
- First command uses
llto list a python script filename. The filename is saved to
_for future use.
- Second command
$_runs the python script.
- Third command
cat $_lists the contents of the python script.
$_ variable/parameter can save some typing.
_ contains the last program run
Here’s an example of differences between
printenv updating the
$ env > env.txt $ printenv > printenv.txt $ diff env.txt printenv.txt 66c66 < _=/usr/bin/env --- > _=/usr/bin/printenv
Because a parameter wasn’t passed to either command, the
_ isn’t updated with the last used parameter as in the previous example but, it is updated with the last command used.
Also noticed how
_ is updated before the commands
printenv are executed because
_ it appears in the output.