meta data for this page
  •  

This is an old revision of the document!


source

Possible test scenario:

  1. call using from another directory full path /home/user/bin/myscripth.sh
  2. add /home/user/bin to PATH and then call from another directory by “myscript.sh”
  3. create symlink to script and call using symlink. Check for relative and absolute symlinks.
  4. it should work also if it is sourced “source” or “.”

The best is to create setup/installer script which hardcode path to one shared script.

Another solutions:

#!/bin/sh
MY_DIR=$(dirname $(readlink -f $0))
$MY_DIR/other_script.sh
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
# Works correctly if script is sourced from another one
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cur_file="${BASH_SOURCE[${#BASH_SOURCE[@]} - 1]}"
cur_dir="$(dirname "${cur_file}")"

`BASH_SOURCE' An array variable whose members are the source filenames where the corresponding shell function names in the `FUNCNAME' array variable are defined. The shell function `${FUNCNAME[$i]}' is defined in the file `${BASH_SOURCE[$i]}' and called from `${BASH_SOURCE[$i+1]}'