Решено: Как шелл скрипту запущенному с точкой определить свой путь в bash 2

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Ответить
bdimych
Сообщения: 46

Решено: Как шелл скрипту запущенному с точкой определить свой путь в bash 2

Сообщение bdimych »

скрипт ставит нужные переменные окружения и должен запускаться не в субшелле а в текущем шелле - точка пробел скрипт.sh

В bash 3 определить легко

Код: Выделить всё

if [ "${BASH_ARGV[0]:0:1}" = "/" ];
then
    # . /full/path/setup.sh
    local mydir=`dirname "${BASH_ARGV[0]}"`
else
    # . ../rel/path/setup.sh
    local mydir=`dirname "$PWD/${BASH_ARGV[0]}"`
fi;


Но в bash 2 нет BASH_ARGV
как ???
Спасибо сказали:
Аватара пользователя
sergeyvp
Сообщения: 807
ОС: ubuntu
Контактная информация:

Re: Решено: Как шелл скрипту запущенному с точкой определить свой путь в bash 2

Сообщение sergeyvp »

bdimych писал(а):
08.10.2007 16:17
Но в bash 2 нет BASH_ARGV
как ???

По моему переменная $0 -- соответствует названию скрипта в любом баше
Спасибо сказали:
Аватара пользователя
sergeyvp
Сообщения: 807
ОС: ubuntu
Контактная информация:

Re: Решено: Как шелл скрипту запущенному с точкой определить свой путь в bash 2

Сообщение sergeyvp »

bdimych писал(а):
08.10.2007 16:58
$0 в sourced скрипте равен /bin/bash

А переменная $1 чему равна?
Спасибо сказали:
bdimych
Сообщения: 46

Re: Решено: Как шелл скрипту запущенному с точкой определить свой путь в bash 2

Сообщение bdimych »

ничему, только если есть параметры то это они пойдут $1 $2 ...
Спасибо сказали:
Аватара пользователя
Славик
Сообщения: 159
ОС: AltLinux2.4 master

Re: Решено: Как шелл скрипту запущенному с точкой определить свой путь в bash 2

Сообщение Славик »

Она равна первому по счету переданому параметру. В bash, если не ошибаюсь, процесс не может быть запущен этажом выше. В текущем окружении - всегда пожалста: . scriptname
Текущий скрипт не проверял, но вроде должен работать. Как правило, энтим способом импортируют переменные из внешних сценариев.
Познание бесконечности требует бесконечного времени.
А. и Б. Стругацкие
Понедельник начинается в субботу
Спасибо сказали:
bdimych
Сообщения: 46

Re: Решено: Как шелл скрипту запущенному с точкой определить свой путь в bash 2

Сообщение bdimych »

Решено обходным путем

1) запускать только через обратные кавычки `script.sh`
2) в скрипте

Код: Выделить всё

if [ "$1" = "" ];
then
   echo eval . \"$0\" \"$0\" # запустить самого себя с параметром равным самому себе
   exit
fi;

if [ "${1:0:1}" = "/" ];
then # launched via full path
    mydir=`dirname "$1"`
else
    mydir=`dirname "$PWD/$1"`
fi;
Спасибо сказали:
Ответить