2014-05-20 112 views
0

我有以下的csh shell腳本給我錯誤,我不太清楚爲什麼。它基本上說,沒有發現ls和cp命令csh shell腳本故障排除

#!/bin/csh 
clear 

set path="~/SCRAT_SIMs/V6.0/bin/linux/" 
echo "Pushing files to: $path" 

ls packages/ 

cp -r packages/acte_asym  $path 
cp -r packages/acte_hq/  $path 

當我擺脫了設置路徑,然後它似乎工作。有任何想法嗎?

+0

嘗試用您家的絕對地址替換〜 。 –

+0

好吧,我覺得自己像一個noob ......我想變量'路徑'與PATH有某種矛盾。我認爲shell的關鍵字是區分大小寫的。當我改變路徑到別的地方時,shell腳本就起作用了。 – jti107

+0

那麼,你確實將你的'path'變量設置爲一個目錄,從而丟失了之前所有的東西(特別是'/ usr/bin'和'/ bin')......這會有很多在那之後找不到的命令...一般來說,你想添加到'path'變量中,而不是完全替換它... – twalberg

回答

0

在csh和tcsh中,$path shell變量和$PATH環境變量綁定在一起。 $PATH(適用於所有內容,而不僅僅是shell)是由:個字符分隔的目錄名稱列表。 $path是一個csh數組變量,它反映了$PATH的內容。

就你而言,你只需要選擇一個不同的變量名稱。

如果你真的想操縱你的執行路徑,你通常應該保留$path的現有內容,並添加新的目錄到開頭或結尾。例如:

set path = (~/bin $path:q) 

:q後綴避免的問題,如果在$PATH一些目錄中有一些奇怪的字符,如空格。注意:不要在這裏使用雙引號:

set path = (~/bin "$path") 

,將擴大你的$path的全部內容到一個字符串嵌入空格; $path:q將其保存爲數組。

Obligatory link。 (我曾經自己編寫csh腳本,但是我發現sh和bash編程要好得多,雖然tcsh在交互使用方面仍然有一些優勢。)

+0

感謝您的解釋......我在這裏和那裏撿起shell腳本所以這有助於很多。也感謝鏈接...在試圖解決問題時拍攝csh我遇到了這個[鏈接](http://www.grymoire.com/Unix/CshTop10.txt),所以我將切換到bash而不是 – jti107