Скрипт bash в unix - возвращает полный путь и имя файла
Я хочу создать скрипт bash в unix, и этот bash возвращает полный путь, потому что я хочу использовать этот файл в других местах.
3 ответа
Вы ищете полный путь и имя файла запущенного скрипта?
#!/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"
Попробуйте, если у вас есть readlink
в вашей системе:
readlink -e filename
Поскольку этот вопрос не пытается ответить на более сложный вопрос преобразования пути с символическими ссылками в физический путь (без каких-либо ссылок), а скорее просто получить каталог и / или полный путь к исходному сценарию, существует более простой способ решение (в этом примере разбито на компоненты для удобочитаемости, плюс вы можете использовать любую из этих частей по отдельности):
#!/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"
Ваши тестовые примеры должны включать в себя вызов этого скрипта с абсолютным путем, относительным путем, его "поиском" и т. Д. И всегда заканчиваться каталогом, содержащим скрипт.