ソフトリンクを生成したスクリプト(~/.../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
、完了するまで両方のプロセスを保持するよりも効率的です。