2013-01-18 72 views
3

我正在嘗試創建一個將執行腳本的別名。當我進入腳本所在的目錄時...可以說/ usr/local/bin/startscript,然後腳本按預期運行並啓動我想要的應用程序。使用別名執行腳本

SO。我走進我的.bashrc文件,並添加一個別名 別名startscript =「在/ usr/local/bin目錄/ startscript」

我們的目標是能夠通過簡單地從任何目錄鍵入「startscript」來運行該腳本。

但是,當我嘗試使用別名來運行腳本時,它不能正常工作,因爲應該啓動的應用程序不會正常工作。

我的腳本

#!/bin/sh 

開始,然後從那裏

任何想法去?由於

SCRIPT:

#!/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 & 

回答

0

我能夠調用腳本如果我這樣做,但它仍然不會給我 結果我想,(應用程序正在啓動)像我做當我從 運行腳本的目錄就住在

這樣看來,「應用」的問題是在同一目錄中的腳本,/usr/local/bin,我們建立是alrea dy您的PATH。爲了使腳本正常但不運行應用程序,意味着你可能會被調用的應用程序錯誤,例如

./application 

,除非你是從/usr/local/bin調用這個會失敗。修復會是這樣

application 
+0

我可以調用腳本,如果我這樣做,但它仍然不會給我我想要的結果(正在啓動的應用程序),就像我從它所在的目錄運行腳本時所做的那樣 – Dan

+0

我有添加了腳本,我對你的回答變化有點困惑 – Dan

1

如果腳本運行作爲只需輸入startscript預期,而在/ usr/local/bin目錄,但是從另一個目錄腳本運行(不返回錯誤),但不產生期望的結果,那麼問題在於如何從腳本內引用應用程序。

正如其他人已經指出,你不應該需要別名/usr/local/bin中的東西,如果它從該目錄運行,顯然你的可執行權限也是正確的。如果您嘗試運行的應用程序也在/usr/local/bin中,那麼您的腳本可能會假設它位於同一個目錄中,而其他地方不會這樣,因此您需要在腳本中廣告cd/usr/local/bin或指定完整的應用路徑。

+0

所以啓動的java應用程序指定了完整路徑。當我從目錄中運行腳本我鍵入./我認爲,當我試圖從不同的目錄運行,我可以只輸入/ usr/local/etc腳本沒有點,它有相同的效果?但是,如果我運行腳本而不打字。/它仍然給我想要的結果(如果從它所在的目錄運行) – Dan

+0

嘗試在應用程序調用之前在腳本中添加'cd/usr/local/bin' - 如果它不是失敗的調用本身,可能是Java應用程序正在運行,但對當前目錄具有一定的依賴性,導致它悄然失敗。如果您可以編輯帖子以顯示調用該應用程序的行,那可能會有所幫助。 –