$ PATHで$ 0を使用してスクリプトを実行するにはどうすればよいですか?

$ PATHで$ 0を使用してスクリプトを実行するにはどうすればよいですか?

ソフトリンクを生成したスクリプト(~/.../gremlin)があります。

ln -s ~/[...]/gremlin ~/sc/gremlin

~/sc/gremlinはい$PATH
スクリプトを直接呼び出すだけです。
リンク経由で呼び出すとそうではありません。
使用するのでdirname $0何も得られません。

スクリプトを変更せずにソフトリンクを置き換える別のスクリプトを作成せずにこの設定を機能させる方法はありますか?

$0 の使い方は次のとおりです。

case `uname` in
  CYGWIN*)
    CP=$( echo `dirname $0`/../lib/*.jar . | sed 's/ /;/g')
    ;;
  *)
    CP=$( echo `dirname $0`/../lib/*.jar . | sed 's/ /:/g')
esac

ベストアンサー1

使用にdirname $0問題があるかどうかどのように使用されます。詳細がなければ、この質問に答えることはできません。

(a)使用法にdirname $0問題があり、(b)スクリプトを変更できない場合、回避策は~/sc/gremlinソフトリンクをスクリプトに置き換えることです。

#!/bin/sh
exec ~/../gremlin "$@"

これは~/../gremlin正しい方法で実行されます$0

使用は、execスクリプトを実行するプロセスが~/../gremlin実行中のプロセスを置き換えるという意味です~/sc/gremlin。これは~/../gremlin、完了するまで両方のプロセスを保持するよりも効率的です。

おすすめ記事