xotkot
@xotkot
хорошо есть и хорошо весьма

Как средствами подключённого скрипта узнать имя основного скрипта ?

имеется script1.sh, в нём с помощью source подключён script2.sh
Как в script2.sh узнать имя первого скрипта(script1.sh) используя средства только самого script2.sh ?

$0 в данном случае мало полезна, так как выводит имя внутреннего скрипта:
% cat script1.sh
#!/usr/bin/env zsh
echo Скрипт1="$0"
source /путь/к/script2.sh
%

% cat script2.sh
echo Скрипт2="$0"
%

% ./script1.sh
Скрипт1=./script1.sh
Скрипт2=/путь/к/script2.sh
%
  • Вопрос задан
  • 2590 просмотров
Решения вопроса 1
xotkot
@xotkot Автор вопроса
хорошо есть и хорошо весьма
пока получился такой вариант:
$ cat script2.sh
local cmdline="$(cat /proc/$$/cmdline)"
echo script1=$(echo ${(V)cmdline} |awk -F'\\^@' '{print $2}')
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
merryjane
@merryjane
Системный администратор
У меня запуск script1.sh сразу выводит как раз путь до скрипта, которым он был вызван, но я использую bash:
$ cat script1.sh
#!/usr/bin/env bash
echo Скрипт1="$0"
source script2.sh

$ cat script2.sh 
echo Скрипт2="$0"

$ ./script1.sh 
Скрипт1=./script1.sh
Скрипт2=./script1.sh

$
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы