1
私はtcshを使用していますが、現在のシェルスクリプトのパスを取得せずに取得しようとしています。TCSHを使用中にシェルスクリプトのフルパスを取得できないという問題
私のスクリプトが含まれています返しtmp.csh
echo $0
ソースが
は/ usr/lbinディレクトリ/ tcshの
dirname $0
リターンは/ usr/lbinディレクトリ
私はtcshを使用していますが、現在のシェルスクリプトのパスを取得せずに取得しようとしています。TCSHを使用中にシェルスクリプトのフルパスを取得できないという問題
私のスクリプトが含まれています返しtmp.csh
echo $0
ソースが
は/ usr/lbinディレクトリ/ tcshの
dirname $0
リターンは/ usr/lbinディレクトリ
使用$_
(セーブそれは$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は自分では難しい。
最初のエコーは何も返しませんでした。 – Sam
@Sam:それを実行すると(例えば '。/ script.tcsh')、それは何をするのでしょうか?あなたがソースしている場合は、場所をエコーします(私は混乱しているので、その行を削除しています)。 –
これは機能します。しかし、今私は、.cshrcを介してファイルをソースしたい。その場合、$ _は空で、パスを取得できません。その場合パスを得るための解決策は何でしょうか? – Sam