Created SC2123 (markdown)

koalaman
2014-03-29 10:28:20 -07:00
parent 8acf933c02
commit cb15fa420d

30
SC2123.md Normal file

@@ -0,0 +1,30 @@
## PATH is the shell search path. Use another name.
### Problematic code:
PATH=/my/dir
cat "$PATH/myfile"
### Correct code:
Good practice: always use lowercase for unexported variables.
path=/my/dir
cat "$path/myfile"
Bad practice: use another uppercase name.
MYPATH=/my/dir
cat "$MYPATH/myfile"
### Rationale:
`PATH` is where the shell looks for the commands it executes. By inadvertently overwriting it, the shell will be unable to find commands (like `cat` in this case).
You get this warning when ShellCheck suspects that you didn't meant to overwrite it (because it contains a non-`/bin` path but no path separators (`:`)).
Best shell scripting practice is to always use lowercase variable names to avoid accidentally overwriting exported and internal variables.
### Contraindications
If you're aware of the above and really do want to set your shell search path to `/my/dir`, you can ignore this warning.