Linux에서 exec 명령을 찾을 수 없음 오류

Linux에서 exec 명령을 찾을 수 없음 오류

아래 명령은 출력을 제공하고 터미널을 종료합니다.

exec sleep 60
exec pwd

다음 명령은 오류를 발생시킵니다. 실행 동작에 대한 제안을 제공해 주세요.

$ exec test1.sh
-bash: exec: test1.sh: not found

$ exec cd /home/
-bash: exec: cd: not found

답변1

  • test1.sh경로에 없을 가능성이 높습니다.

    test1.sh현재 디렉터리에 있는 경우 다음을 사용합니다.

    exec ./test1.sh
    

    그렇지 않으면 전체 경로를 지정하거나 명령을 에 배치하십시오 $PATH.

  • cd은 내장 셸이며 시스템에서 사용할 수 있는 이 유틸리티의 외부 변형이 없습니다.

    내장 명령이 아닌 외부 명령으로 대체하도록 셸에만 요청할 수 있습니다. 전혀 모른다무엇대신 시도해 보세요어떻게누구나 시도해 보았지만 뭐라고 말할 수 있을지 모르겠습니다.

    예를 들어 중간 셸에서 이중 실행을 수행할 수 있습니다.

    exec sh -c 'cd /home && exec sleep 60'
    

    이렇게 하면 추가 쉘을 남기지 않고 sleep현재 작업 디렉토리가 변경된 상태로 명령이 실행 됩니다 ./home

답변2

실제로 질문하지 않으셨기 때문에 확실하지 않습니다."터미널을 나가세요""도 문제다다음 명령은 오류를 발생시킵니다".

다른 사람들은 실행하려고 하면 test1.sh오류가 발생하는 이유를 설명했지만 완전성을 위해 여기서 다시 반복하겠습니다. 이는 검색 경로( $PATH변수)에 의도적으로 현재 디렉터리가 포함되지 않기 때문입니다. 그 안에 없는 것을 실행하려면 $PATH최소한 하나의 디렉터리 구분 기호를 포함해야 합니다. 현재 디렉토리에 있는 항목에 대한 가장 짧은 해결책은 이름 앞에 ./;를 붙이는 것입니다. ( 예 ./test1.sh를 들어 절대 경로를 사용할 수도 있지만 /home/myusername/test1.sh더 많은 입력이 필요합니다.)

더 중요한 것은,exec제 생각에는 애플리케이션을 실행하는 데 필요한 기대치가 있는 것 같습니다 .그러나 실제로는 그렇지 않습니다.사실, 이 동사가 한동안 존재한다는 사실을 잊어버리시기 바랍니다.*를 절대 사용하지 마세요exec.

명령을 실행하는 데만 사용하세요. 따라서 첫 번째 예제 세트에서는 다음과 같이 작성하면 됩니다.

sleep 60
pwd

그리고 두 번째 세트에서는

./test1.sh

cd /home

* 적어도 exec왜 필요한지 이해할 때까지우연한이 권장사항에 대한 예외입니다.

관련 정보