2013-06-29 4 views
0

내 개발 환경을 설정하기 위해 bash 스크립트를 만들려고합니다. 이 스크립트는 루트로 실행하지만 오류를 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

기타 문제 :'[! -a PATH]''[! -a $ PATH]'- 또는 더 나은 것은'[! -a "$ PATH"]'. (또는 이름을 바꿀 때마다) 각 행의 끝에는 세미콜론이 필요하지 않습니다. 상단의 주석 처리 된 섹션에서'0'과']] 사이에 공백을 추가하십시오. 그대로,'0]]'은 하나의 단어로 해석됩니다. –

답변

1

PATH은 명령을 찾을 위치를 쉘에게 알려줍니다. 귀하의 경우에는 /etc 어딘가에서 ln을 찾고 예상대로 찾을 수 없습니다.

다른 이름을 사용해야합니다.

+3

쉘 스크립트에서 소문자 (또는 대소 문자가 혼용되는) 변수 이름을 사용하는 것이 좋습니다. 특별한 의미를 지닌 모든 대문자 변수 이름이 많이 있으며 잘 모르는 변수를 쉽게 알아낼 수 있습니다. –

5
PATH=... 

축하를 얻을, 당신은 how the shell finds commands을 사방했습니다. 그러지 마.

+0

고마워 ...이게 내 첫 번째 bash 스크립트이기 때문에 잘 모르겠다.^_^ – Webnet

+0

'PATH'는 쉘이 명령을 찾는 방법을 변경하는 것이 아니라'execvp'가 명령을 찾는 방법을 변경한다. -and [execvp (3)] (http://man7.org/linux/man-pages/man3/execvp.3.html)은 셸 외부의 많은 소프트웨어에서 다른 프로그램을 실행하는 데 사용됩니다. –

+0

또한 읽으십시오 http://www.tldp.org/LDP/abs/html/ –