What does it mean in shell when we put a command inside dollar sign and parentheses: $(command)
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
Could anybody help me to figure out how this command get executed?
Let's look at different parts of the command. BASH_SOURCE
is a bash array variable containing source filenames. So "${BASH_SOURCE[0]}"
would return you the name of the script file.
dirname
is a utility provided by GNU coreutils that remove the last component from the filename. Thus if you execute your script by saying bash foo
, "$( dirname "${BASH_SOURCE[0]}" )"
would return .
. If you said bash ../foo
, it'd return ..
; for bash /some/path/foo
it'd return /some/path
.
Finally, the entire command "$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
gets the absolute directory containing the script being invoked.
$(...)
allows command substitution, i.e. allows the output of a command to replace the command itself and can be nested.