1

tcsh を使用していますが、現在のシェル スクリプトのパスを取得しようとしていますが、成功していません。

私のスクリプトには以下が含まれます:

echo $0

ソース tmp.csh が返す

/usr/lbin/tcsh

dirname $0

/usr/lbin を返します

4

1 に答える 1

4

の代わりに使用します$_(スクリプトが最初に行うこととして、変数に保存します) $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

編集:

おそらくあなたの.cshrc

set basepath=/path/to/base
source "$basepath/scriptname" "$basepath"

そしてあなたの基本スクリプトで:

source "$1/subscript"

基本スクリプトが にない限り、$PATHその場合、自分で物事を難しくしているだけです。

于 2011-01-06T17:46:58.033 に答える