скрипт ставит нужные переменные окружения и должен запускаться не в субшелле а в текущем шелле - точка пробел скрипт.sh В bash 3 определить легко if [ "${BASH_ARGV[0]:0:1}" = "/" ]; then # . /full/path/setup.sh local mydir=`dirname "${BASH_ARGV[0]}"` else # . ../rel/path/setup.sh local mydir=`dirname "$PWD/${BASH_ARGV[0]}"` fi; Но в bash 2 нет BASH_ARGV как ???