Created SC3051 (markdown)

Vidar Holen
2022-11-02 21:12:52 -07:00
parent 543541b589
commit 0ecfd0eea8

32
SC3051.md Normal file

@@ -0,0 +1,32 @@
## In POSIX sh, `source` in place of `.` is undefined
### Problematic code:
```sh
#!/bin/sh
source /usr/lib/myfile.sh
```
### Correct code:
```sh
#!/bin/sh
. /usr/lib/myfile.sh
```
### Rationale:
Your script uses a shell feature not supported by the shebang. Either rewrite the script to be portable, or change the shebang to explicitly require a shell like Bash.
`source` is a Bash/Ksh specific, readable synonym for `.`. In this case, you can for the most part easily replace `source` with `.`
Do note that `source myfile` in POSIX sh only searches `$PATH`, while Bash/Ksh will additionally search the current directory.
### Exceptions:
None
### Related resources:
* Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!