Проблема получения полного пути скрипта оболочки при использовании TCSH - PullRequest
1 голос
/ 06 января 2011

Я использую tcsh и безуспешно пытаюсь получить путь к текущему сценарию оболочки.

Мой скрипт содержит:

echo $0

source tmp.csh возвращает

/ USR / lbin / Tcsh

dirname $0

возвращает / usr / lbin

1 Ответ

4 голосов
/ 06 января 2011

Используйте $_ (сохраните его в переменной как первое, что делает скрипт) вместо $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, в этом случае вы просто усложняете себе жизнь.

...