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