Which bash command prints the literal five characters $USER instead of the current user name?
LPIC-1 Exam 101-500, objective 103. GNU and Unix commands medium
Draft — not checked yet. This question was written from the published exam objectives and cites the clause it comes from, but nobody has yet read it against that clause and signed for it.
It is kept out of search results and out of mock exams until they have. Read the source below before you take the answer as settled.
The options
Not correct echo $USER
Wrong. Unquoted, the variable expands exactly as it does in double quotes, so this prints the user name too — with the extra risk that the result is word-split.
Not correct echo "$USER"
Wrong. Double quotes still allow parameter expansion (and command substitution and backslash escapes); they only stop word splitting and globbing. This prints the user name.
Correct echo '$USER'
Correct. Single quotes suppress every expansion inside them, so the shell hands echo the literal string $USER.
Not correct echo ${USER}
Wrong. The braces only delimit the variable name so it can be followed by other characters; ${USER} expands the same way as $USER.
Why
Single quotes are the strong quote: nothing inside is expanded, and the only character that cannot appear is another single quote. Double quotes are the weak quote: $, `, \ and ! still act. That difference is the most frequently tested quoting fact on this exam.
Where this comes from
- Cited
- LPI exam objective 103.1
- What it says
- Quoting: the difference between single quotes, double quotes and backslash escaping.
Practise this
Reading one question is not practice. The trainer will draw a set from objective 103 and space the ones you get wrong.