2013-06-29 49 views
0

我試圖創建一個bash腳本來設置我的開發環境。該腳本作爲root運行,但我得到的錯誤line 11: ln: command not foundBash文件顯示「ln:command not found」

#!/bin/bash 
#Require script to run as root - doesn't work - syntax error in conditional expression: unexpected token `;' 
#if [[ $(/usr/bin/id -u) -ne 0]]; then 
#  echo "Script must be run as root"; 
#  exit; 
#fi 

#PHPMyAdmin 
PATH="/etc/apache2/sites-available/phpmyadmin.local"; 
if [ ! -a PATH ]; then 
     ln -s /home/user/Ubuntu\ One/htdocs/vhosts/phpmyadmin.local PATH; 
     a2ensite phpmyadmin.local; 
fi 
+1

其他問題:'[! - PATH]'應該是'[! -a $ PATH]' - 或者更好,'[! - 「$ PATH」]。 (或者你決定將它重命名爲。)在每行的結尾不需要分號。在頂部的註釋部分,在'0'和']]'之間加一個空格。按原樣,'0]]'被解析爲單個單詞。 –

回答

1

PATH告訴shell在哪裏查找命令。在你的情況下,它尋找ln/etc某處並且可以預見在那裏找不到它。

您應該使用不同的名稱。

+3

這就是爲什麼在shell腳本中使用小寫變量名(或混合大小寫變量名)是一個好主意 - 有許多全大寫變量名具有特殊的含義,並且很容易打破您不知道的變量名。 –

5
PATH=... 

恭喜你,你已經重挫how the shell finds commands。不要這樣做。

+0

謝謝......這是我的第一個bash腳本,所以我不知道^ _^ – Webnet

+0

挑剔:'PATH'不僅改變shell如何找到命令,而且如何找到命令execvp和execvp(3 )](http://man7.org/linux/man-pages/man3/execvp.3.html)被shell之外的許多軟件用來運行其他程序。 –

+0

另請參閱http://www.tldp.org/LDP/abs/html/ –