2011-04-22 24 views
0

所以,我有叫refre.sh這個簡單的小shell腳本,從SVN更新,並調用一個Django命令:呼叫Django的命令從手動調用不同

echo "Refresh..." 
svn update 
python manage.py collectstatic --noinput --settings=settings.prod 

當我./refre.sh執行腳本,將輸出:

Refresh... 
'nknown command: 'update 
Type 'svn help' for usage. 
Unknown command: 'collectstatic' 
Type 'manage.py help' for usage. 

但是當我在shell中手動輸入命令,我得到正確的輸出。

這導致我認爲有一個環境問題或類似的東西,因爲我有Django本地安裝,並沒有使用全局安裝(也是本地安裝python,但我已經把完整的路徑正確的Python,並沒有幫助)。

所以,我必須設置一些環境變量或我錯過了什麼?

+0

你如何執行該腳本? – vartec 2011-04-22 14:19:51

+0

這個腳本叫做refresh.sh,所以我把它叫做./refresh.sh – 2011-04-22 14:24:01

回答

2

首先你應該在劇本第一行之前有#!/bin/sh

當然,您必須檢查您正在使用的編輯器是否保存了UNIX line endings\n)而不是Windows的編輯器(\r\n)。

+0

做到了這一點,它只是加深了這個謎團:現在它說:「sh:./refre.sh:/ bin/sh^M:糟糕的解釋器: 無此文件或目錄」。不知道「^ M」是什麼〜X( – 2011-04-22 14:35:22

+0

^M是\ r,換句話說就是DOS/Windows行結尾。你用什麼編輯這個文件? – vartec 2011-04-22 14:36:17

+0

就是這樣!!! Windows新行問題。你可以發佈這個答案而不是評論,所以其他人都會看到它嗎? – 2011-04-22 14:45:38