Используйте $_
(сохраните его в переменной как первое, что делает скрипт) вместо $0
.
#!/bin/tcsh
set called=($_)
if ("$called" != "") then
echo "sourced $called[2]" # the script was sourced from this location
endif
if ("$0" != "tcsh") then
echo "run $0" # the script was run from this location
endif
Edit:
Возможно, в вашем .cshrc
:
set basepath=/path/to/base
source "$basepath/scriptname" "$basepath"
и в вашем базовом скрипте:
source "$1/subscript"
Если только базовый скрипт не находится в вашем $PATH
, в этом случае вы просто усложняете себе жизнь.