Partial Merge #14831: Scripts and tools: Use #!/usr/bin/env bash instead of #!/bin/bash.

688f665a5e526fda0fb797bf617412fe9cbe64fd Scripts and tools & Docs: Used #!/usr/bin/env bash instead of obsolete #!/bin/bash, added linting for .sh files shebang and updated the Developer Notes. (vim88)

Pull request description:

  As it was discussed in [#13510](https://github.com/bitcoin/bitcoin/pull/13510), it is better to use `#!/usr/bin/env bash` instead of `#!/bin/bash`.

Tree-SHA512: 25f71eb9a6a0cdc91568b5c6863205c5fe095f77a69e633503a2ac7805bd9013af8538e538c0c666ce96a28e3f43ce7a8df5f08d4ff007723bb588d85674f2da
This commit is contained in:
Wladimir J. van der Laan 2018-12-06 15:45:48 +01:00 committed by Munkybooty
parent 31924dbd30
commit debac13960
5 changed files with 40 additions and 2 deletions

View File

@ -1,3 +1,5 @@
#!/usr/bin/env bash
#
# Copyright (c) 2017 The Bitcoin Core developers # Copyright (c) 2017 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying # Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php. # file COPYING or http://www.opensource.org/licenses/mit-license.php.

View File

@ -28,6 +28,8 @@ Developer Notes
- [Strings and formatting](#strings-and-formatting) - [Strings and formatting](#strings-and-formatting)
- [Shadowing](#shadowing) - [Shadowing](#shadowing)
- [Threads and synchronization](#threads-and-synchronization) - [Threads and synchronization](#threads-and-synchronization)
- [Scripts](#scripts)
- [Shebang](#shebang)
- [Source code organization](#source-code-organization) - [Source code organization](#source-code-organization)
- [GUI](#gui) - [GUI](#gui)
- [Subtrees](#subtrees) - [Subtrees](#subtrees)
@ -621,6 +623,31 @@ TRY_LOCK(cs_vNodes, lockNodes);
} }
``` ```
Scripts
--------------------------
### Shebang
- Use `#!/usr/bin/env bash` instead of obsolete `#!/bin/bash`.
- [*Rationale*](https://github.com/dylanaraps/pure-bash-bible#shebang):
`#!/bin/bash` assumes it is always installed to /bin/ which can cause issues;
`#!/usr/bin/env bash` searches the user's PATH to find the bash binary.
OK:
```bash
#!/usr/bin/env bash
```
Wrong:
```bash
#!/bin/bash
```
Source code organization Source code organization
-------------------------- --------------------------

View File

@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
export LC_ALL=C export LC_ALL=C
set -e set -e

View File

@ -1,3 +1,5 @@
#!/usr/bin/env bash
#
# Copyright (c) 2014-2015 The Bitcoin Core developers # Copyright (c) 2014-2015 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying # Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php. # file COPYING or http://www.opensource.org/licenses/mit-license.php.

View File

@ -1,5 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Shebang must use python3 (not python or python2) # Assert expected shebang lines
export LC_ALL=C export LC_ALL=C
EXIT_CODE=0 EXIT_CODE=0
@ -10,4 +10,11 @@ for PYTHON_FILE in $(git ls-files -- "*.py"); do
EXIT_CODE=1 EXIT_CODE=1
fi fi
done done
for SHELL_FILE in $(git ls-files -- "*.sh"); do
if [[ $(head -n 1 "${SHELL_FILE}") != "#!/usr/bin/env bash" &&
$(head -n 1 "${SHELL_FILE}") != "#!/bin/sh" ]]; then
echo "Missing expected shebang \"#!/usr/bin/env bash\" or \"#!/bin/sh\" in ${SHELL_FILE}"
EXIT_CODE=1
fi
done
exit ${EXIT_CODE} exit ${EXIT_CODE}