2011-01-06 10 views

答えて

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である場合を除きあなたはちょうど薄くしていますgsは自分では難しい。

+0

最初のエコーは何も返しませんでした。 – Sam

+0

@Sam:それを実行すると(例えば '。/ script.tcsh')、それは何をするのでしょうか?あなたがソースしている場合は、場所をエコーし​​ます(私は混乱しているので、その行を削除しています)。 –

+0

これは機能します。しかし、今私は、.cshrcを介してファイルをソースしたい。その場合、$ _は空で、パスを取得できません。その場合パスを得るための解決策は何でしょうか? – Sam

関連する問題