무슨 일이 일어났는지 잘 모르겠습니다.
a.sh
다음 명령을 사용하여 스크립트를 호출 해 보겠습니다.
/users/guru$ cat a.sh
#! /usr/bin/ksh
echo "Hello"
date
으로 실행하면 ksh
작업이 완료됩니다.
/users/guru$ ksh a.sh
Hello
Tue Jul 15 15:00:52 EDT 2014
파일 권한과 ksh
경로를 확인하세요.
/users/guru$ ls -l a.sh
-rwxrwxrwx 1 guru kpc 35 Jul 15 15:00 a.sh
/users/guru$ a.sh
ksh: a.sh: not found
/users/guru$ which ksh
/usr/bin/ksh
답변1
실행하려고 할 때 "./a.sh"를 시도하십시오. 파일이 어디에 있는지 알아야 합니다.
"./"는 현재 디렉터리를 찾도록 지시합니다.
답변2
명령을 입력하면 쉘은 변수에 의해 지정된 디렉토리 목록에서 해당 명령을 찾습니다 PATH
.
PATH
기본적으로 보안상의 이유로 현재 디렉토리는 여기에 없으므로 쉘은 스크립트를 찾을 수 없습니다.
, 를 사용하여 ./
현재 디렉토리를 나타내면 쉘이 스크립트의 위치를 알 수 있습니다.
답변3
./scriptname
다른 질문에 올렸듯이 가끔 다른 포스팅에 올렸던 것처럼 스크립트를 실행해도 .답변, 컴퓨터에서 테스트할 수 있습니다.
시험
cat ksh_experiment.ksh
#!/usr/bin/ksh
echo "Hello"
이제 파일을 실행할 때 권한을 제공하면 출력이 성공적으로 생성됩니다. 이제 논의한 대로여기, 파일에 캐리지 리턴을 삽입했습니다. 이제 스크립트를 실행하면 내가 얻는 결과는 다음과 같습니다.
ksh: ./ksh_experiment.ksh: not found [No such file or directory]
이제 cat -v ksh_experiment.ksh
동일한 출력이 생성됩니다. 또한 를 입력하면 vim ksh_experiment.ksh
새 파일이 열립니다.
제공한 링크의 답변에서 논의한 대로 다음 명령을 사용하여 캐리지 리턴을 제거했습니다.
perl -p -i -e "s/\r//g" ksh_experiment.ksh
수정사항을 실행하면 예상한 결과가 나타납니다.
이제 dos2unix
이를 사용하여 파일을 변환할 수도 있습니다.