Как вы можете получить доступ к базовому имени файла, который вы используете в Bash?

Я ищу файл в терминале bash, который должен экспортировать некоторые переменные среды.

Пример:

source linux_x86.env

файл env выглядит примерно так:

export ARCH=/home/user/project/linux_x86

У меня есть куча разных архитектур для компиляции, и я хочу сделать что-то вроде этого:

export ARCH=/home/user/project/`basename $0 .env`

где basename $0 .env даст мне базовое имя файла env

bash linux_x86.env
linux_x86

Вышеприведенное будет работать как сценарий bash, но, похоже, не работает, когда вы загружаете файл.

Есть ли способ получить такое же поведение из источника?


person hacintosh    schedule 24.07.2009    source источник


Ответы (1)


См. Получение исходного каталога сценария Bash изнутри, особенно комментарий относительно переменной BASH_SOURCE.

Резюме: SCRIPT_NAME=$(basename ${BASH_SOURCE[0]})

person Andrew Barnett    schedule 24.07.2009
comment
Спасибо! В итоге я получил упрощенную версию вышеуказанного NAME=basename $BASH_SOURCE .env - person hacintosh; 24.07.2009