我想從Volume Library運行this app的pvm2raw實用程序。csh錯誤:HOSTTYPE:未定義變量
我碰到下面的錯誤,輸入我的Ubuntu 10.10終端上csh build.sh tools
時:
這是爲什麼?
我想從Volume Library運行this app的pvm2raw實用程序。csh錯誤:HOSTTYPE:未定義變量
我碰到下面的錯誤,輸入我的Ubuntu 10.10終端上csh build.sh tools
時:
這是爲什麼?
C Shell不喜歡你引用未定義的變量。因此,在運行腳本之前,您需要設置$HOSTTYPE
,或者修復腳本,以便它自己確定$HOSTTYPE
正確。
Bourne shell和衍生產品大多數時間將未定義的變量視爲空字符串。
建議:不要使用C Shell進行編程。請參閱:Csh Programming Considered Harmful。
您是否有指示啓動.sh
文件與csh
?
雖然沒有必要命名.csh
,.sh
文件通常意味着Bourne或bash shell腳本的csh腳本。
此外,您的腳本名稱意味着構建過程。通常使用默認外殼完成構建,或者在Solaris,AIX,HP等舊UNIX系統上使用Bourne(sh
),對於Linux則使用bash
。
您應該可以在沒有任何shell之前運行build.sh
(除非您自己編寫腳本或已經給出了指令來執行此操作)。
Jonathan Leffler說的都是真的。我想補充一點,CSH確實允許空變量的「符號」 $?varName
,它可以像
if (! $?HOSTNAME) then
setenv HOSTNAME `hostname`
endif
所以可以使用,你寫的build.sh
或者你使用提供的腳本?
如果您已經編寫了自己的csh腳本,請使用該代碼塊檢查變量的所有並提供默認值。 (還有其他方法可以實現此目標,如source $HOME/.env_file
,您必須在其中創建一個$HOME/.env_file
,其中列出了腳本需要的所有變量賦值)。
如果您使用的是提供的腳本,在Ubuntu上非常像它真的是bash腳本。看看該腳本的第一行,是否說#!/bin/bash
(或類似的),如果是,確認腳本設置爲執行,ls -l build.sh
,你需要在行的前面看到類似-rwxr-xr-x
的東西,'x是鍵位。如果沒有,那麼chmod 755 build.sh
將解決這個問題。一旦權限允許執行,只需運行./build.sh
。
我希望這會有所幫助。
我也面臨類似的問題。
Try :: tcsh build。SH
HOSTTYPE
是一種非POSIX猛砸擴展
它在man bash
被記錄在案,並且我們可以證實,POSIX不通過下載和grepping提到它:Is there a listing of the POSIX API/functions?
因此,這並不奇怪,該變量在csh
中沒有定義,從而導致錯誤。