mirror of
https://github.com/koalaman/shellcheck.git
synced 2025-10-03 19:29:44 +08:00
Created SC2123 (markdown)
30
SC2123.md
Normal file
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.
|
Reference in New Issue
Block a user