Aaron H. Aaron H. - 5 months ago 10
Linux Question

Bash: How _best_ to include other scripts?

The way you would normally include a script is with "source"

eg:

main.sh:

#!/bin/bash

source incl.sh

echo "The main script"


incl.sh:

echo "The included script"


The output of executing "./main.sh" is:

The included script
The main script


... Now, if you attempt to execute that shell script from another location, it can't find the include unless it's in your path.

What's a good way to ensure that your script can find the include script, especially if for instance, the script needs to be portable?

Answer

I tend to make my scripts all be relative to one another. That way I can use dirname:

#!/bin/sh

my_dir="$(dirname "$0")"

"$my_dir/other_script.sh"