The life of one of your Bash scripts is hard to reckon when you first write it. They often end up at opposite ends of the company on very different systems. This makes it a good idea to make them as portable as possible.
A couple of easy wins here are to replace the traditional interpreter line and drop
The traditional interpreter line at the start of the file usually links to the binary of the shell that you want the script to get executed by. E.g. for Bash
Unfortunately the Bash binary can be stored in different locations on different distros so this can fail. Replace this line with the
env command for an easy win.
env has access to the local environment variables such as the location of interpreters and is always in the same location.
Here it is for Bash:
#! /usr/bin/env bash
And for Python3:
#! /usr/bin/env python3
Using this as your interpreter line will avoid lots of issues down the line.
echo v printf
echo command behaves somewhat differently on different distros so much that it can cause some scripts to fail or behave unexpectedly. In place of
The only unexpected part of using
printf is that you need to specify all new lines. The following
echo "Hello World!"
Becomes the following
printf "Hello World!\n"
It’s not much extra work and will save you time in the future working out why your script has failed on some distant system.