Могу ли я получить абсолютный путь к текущему скрипту в KornShell? - PullRequest
21 голосов
/ 17 апреля 2009

Можно ли узнать полный путь к скрипту, который в данный момент выполняется в KornShell (ksh)?

т.е. если мой сценарий находится в /opt/scripts/myscript.ksh, могу ли я программно внутри этого сценария обнаружить /opt/scripts/myscript.ksh?

Спасибо

Ответы [ 12 ]

0 голосов
/ 04 января 2016

Я обновил ответ Эдварда Штодта, чтобы иметь возможность работать с символическими ссылками абсолютного пути, а также с цепочками ссылок.

DZERO=$0
while true; do
  echo "Trying to find real dir for script $DZERO"
  CPATH=$( cd -P -- "$(dirname -- "$(command -v -- "$DZERO")")" && pwd -P )
  CFILE=$CPATH/`basename $DZERO`
  if [ `ls -dl $CFILE | grep -c "^l" 2>/dev/null` -eq 0 ];then
    break
  fi
  LNKTO=`ls -ld $CFILE | cut -d ">" -f2 | tr -d " " 2>/dev/null`
  DZERO=`cd $CPATH ; command -v $LNKTO`
done

Ужасно, но работает ... После запуска это путь $ CPATH и файл $ CFILE

0 голосов
/ 04 мая 2010

Попробуйте использовать это:

dir = $(dirname $0)
...