Подтвердить что ты не робот

Определить, относительный или абсолютный путь в программе оболочки

Как указано в заголовке, мне нужно определить, когда запускается программа, если путь относительный или абсолютный:

./program #relative
dir/dir2/program #relative
~User/dir/dir2/program #absolute
/home/User/dir/dir2/program #absolute

Это мои тестовые примеры. Как я могу это сделать в программе оболочки?

Или, в общем, как проверить, является ли путь $0 в этом случае относительным или абсолютным?

4b9b3361

Ответ 1

if [[ "$0" = /* ]]
then
   : # Absolute path
else
   : # Relative path
fi

Ответ 2

Общее решение для любого $path, а не просто $0

POSIX One Liner

[ "$path" != "${path#/}" ] && echo "absolute" || echo "relative"

Ответ 3

case "$directory" in
   /*)
      echo "absolute"
      ;;
   *)
      echo "relative"
      ;;
esac

Ответ 4

if [ ${path:0:1} == / ]
then
     echo Absolute path
else
     echo Non-absolute path
fi