Я хочу разработать сценарий bash в unix, и этот bash возвращает полный путь, потому что я хочу использовать этот файл в других местах.
Попробуйте, если у вас есть readlink
в вашей системе:
readlink -e filename
Вы ищете полный путь и имя файла запущенного скрипта?
#!/bin/bash
_my_name =basename $0
если [ "echo $0 | cut -c1
"=" / "]; затем
_my_path=`dirname $0`
еще
_my_path=`pwd`/`echo $0 | sed -e s/$_my_name//`
фи
echo "Имя файла: $ _my_name"
echo "Абсолютный путь: $ _my_path"
echo "Полный путь + имя: $ 0"
Поскольку этот вопрос не пытаясь ответить на более сложный вопрос о преобразовании пути с символическими ссылками в физический путь (без каких-либо ссылок), а просто получить каталог и / или полный путь к исходному сценарию, есть более простое решение (разбитое на этот пример на компоненты для удобства чтения, плюс вы можете использовать любую из этих частей по отдельности):
#!/bin/bash
PROG_PATH=${BASH_SOURCE[0]} # this script's name
PROG_NAME=${PROG_PATH##*/} # basename of script (strip path)
PROG_DIR=$(cd "$(dirname "${PROG_PATH:-$PWD}")" 2>/dev/null 1>&2 && pwd)
echo "script directory is: $PROG_DIR"
Ваши тестовые примеры должны включать вызов этого сценария с указанием абсолютного пути, относительного пути, его "источник" и т. Д. И всегда завершаться каталогом, содержащим сценарий.