3

スクリプトを実行するエイリアスを作成しようとしています。スクリプトが配置されているディレクトリに移動すると... /usr/local/bin/startscriptとしましょう。スクリプトは期待どおりに実行され、必要なアプリケーションを開始します。

それで。私は自分のbashrcファイルに入り、エイリアスエイリアスstartscript = '/usr/local/bin/startscript'を追加しました

目標は、任意のディレクトリから「startscript」と入力するだけでスクリプトを実行できるようにすることです。

ただし、エイリアスを使用してスクリプトを実行しようとすると、起動するはずのアプリケーションが起動しないため、正しく機能しません。

私のスクリプトはで始まります

#!/bin/sh

そしてそこから行く

何か案は?ありがとう

脚本:

#!/bin/sh

#- Check for user 'user'
if [[ "`whoami`" != "user" ]]; then
  echo "This script can only be executed by user 'user'."; exit
fi

. /usr/local/bin/etctrx/startscriptdirectory/startscriptsetup

#- Kill manager to avoid multiple processes
pkill -f 'JavaApp.jar'

#- Start
nohup java -classpath /usr/local/bin/etctrx/startscriptdirectory/RequiredJars/ojdbc5.jar:/usr/local/bin/etctrx/startscriptdirectory/RequiredJars/activation.jar:/usr/local/bin/etctrx/startscriptdirectory/RequiredJars/mail.jar -jar /usr/local/bin/etctrx/startscriptdirectory/JavaApp.jar > ${JAVAAPPLOGS}/startscript.log 2>&1 &
4

2 に答える 2

1

/usr/local/bin 内で と入力するだけでスクリプトが期待どおりに実行されstartscript、別のディレクトリからはスクリプトが実行され (エラーは返されません)、必要な結果が得られない場合、問題は参照方法にあります。スクリプト内からアプリケーション。

他の人が指摘したように、何かのエイリアスは必要ありません/usr/local/bin。そのディレクトリから実行する場合、明らかに実行権限も正しいです。実行しようとしているアプリケーションも含まれている/usr/local/bin場合、スクリプトはおそらく同じディレクトリにあると想定しますが、他の場所ではそうではありません。そのため、スクリプト内にcdto を追加/usr/local/binするか、完全なアプリケーション パスを指定する必要があります。 .

于 2013-01-18T21:39:10.983 に答える
0

これを行うとスクリプトを呼び出すことができますが、スクリプトが存在するディレクトリからスクリプトを実行したときのように、(アプリケーションが開始されている) 必要な結果が得られません。

問題の「アプリケーション」はスクリプトと同じディレクトリにあるように見えますが、スクリプト/usr/local/binはすでにPATH. スクリプトが正しく実行されてもアプリケーションが実行されないということは、たとえば、アプリケーションの呼び出しが間違っている可能性があることを意味します。

./application

から呼び出していない限り、これは失敗します/usr/local/bin。修正は次のようになります

application
于 2013-01-18T21:28:16.493 に答える