Step 1 of 5 · Reading · ~1 min
Read
Built-ins & Variables
Environment Variables & Expansion
The shell maintains two sets of variables:
Shell variables — local to the shell process. name=value sets one.
Environment variables — same, but ALSO inherited by child processes.
export name=value makes a shell variable an environment variable.
Variable expansion happens during command line processing, AFTER tokenization but BEFORE execution:
| Syntax | Meaning |
|---|---|
$VAR | value of VAR (empty if unset) |
${VAR} | same, with explicit boundaries |
${VAR:-default} | use VAR or "default" if VAR is unset/empty |
${VAR:=default} | use VAR or assign+use "default" |
${VAR:?error message} | error out if VAR is unset/empty |
${#VAR} | length of VAR's value |
$0 $1 ... $9 | positional arguments (script args, function args) |
$@ $* | all positional args |
$? | exit status of last command |
$$ | shell's own PID |
Special rule: variables are expanded inside "..." but NOT inside '...'.
Order of expansion is fixed: tilde -> variable -> command -> arithmetic -> word splitting -> globbing.
Up nextGlobbing (Pathname Expansion)Built-ins & Variables
Discussion
Ask a question, share an insight, or help someone who’s stuck.
Sign in to post a comment or reply.
Loading…