Скрипт 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"

Ваши тестовые примеры должны включать в себя вызов этого скрипта с абсолютным путем, относительным путем, его "поиском" и т. Д. И всегда заканчиваться каталогом, содержащим скрипт.

Другие вопросы по тегам