2012-07-02 130 views
1

我在運行ant時遇到了一些麻煩。這是我的問題的簡化版本。我有一個shell腳本script1.sh:ant:command not found

export ANT_HOME=/opt/Ant 
ant -version 

This works。但是當我嘗試創建另一個腳本SCRIPT2:

cd /location/of/script1 
sudo -E ./script1.sh | tee log.txt 

我得到的錯誤ant: command not found.有誰知道爲什麼發生這種情況。

+0

後你'CD /位置//script1',鍵入'這ant' –

+0

你在同一個殼?你重新加載了shell嗎?導出是本地的shell(但你現在可能)。 –

回答

4

聽起來你sudo後丟失PATH設置。嘗試在script1.sh中添加echo $PATH以查看值之前和之後的值。或者只是定義script1.sh

export ANT_HOME=/opt/Ant 
${ANT_HOME}/ant -version 
+1

謝謝。當我引用完整的ant路徑時,我能夠通過命令找不到錯誤。原來我也有執行權限問題。一個簡單的'chmod + x *'固定了。 – yellavon

+0

$ {ANT_HOME}/ant版本 bash:/ opt/Ant/ant:沒有這樣的文件或目錄 –

+1

@ Mr.Hyde這個答案是特定於原始問題的。您需要將「ANT_HOME」設置爲您在系統上保留「ant」的位置。 – jjlin

0

不知道shell是什麼,或者看到更多的腳本,很難準確地說出發生了什麼。但是如果你想讓script2知道ANT_HOME,你可能需要sourceeval script1。 See here。另外我知道管道'|'導致Bash在子shell中執行操作,這在某些情況下可能會有問題(如果您使用Bash)。

編輯: 仔細檢查你使用的是你以爲你是螞蟻的版本:

#!/bin/bash 
# Capital A here seems suspicious to me... 
export ANT_HOME=/opt/Ant 
echo "`${ANT_HOME}/ant -version`" 
+0

是的,我正在使用bash。我的實際命令是'sudo -E ./script1.sh 2>&1 | tee log.txt'。 – yellavon