제가 질문하고 싶은 내용과 비슷한 변형이 존재하는데 정확한 질문을 찾을 수 없어서 여기에 질문하겠습니다.
..c
ex
/mnt/f/C_F/ex
나는 /mnt/f/C_F
by 내부에서 그것을 아주 잘 실행할 수 있지만, say(또는 그 문제에 대한 임의의 디렉토리) ./ex
에서 그것을 실행하고 싶다면 어떻게 해야 할까요 ? 이를 위해 PATH에 /mnt/f
추가하고 싶지 않습니다 ./mnt/f/C_F/
해결책을 찾을 수 없었고 그렇게 하는 것이 불가능하다고 생각합니다. 이것을 확인해 주십시오.
답변1
해당 파일의 절대 경로를 사용하십시오.
/mnt/f/C_F/ex
이는 현재 작업 디렉터리에 관계없이 항상 작동해야 합니다. 일반적으로 이러한 이유로 스크립트 내에서는 절대 경로를 선호해야 합니다(중요한 예외가 있지만).
답변2
항상 실행 파일의 상대 경로 또는 전체 경로를 사용할 수 있습니다.
에 있을 때 /mnt/f
다음을 실행할 수 있습니다.
C_F/ex
# or
/mnt/f/C_F/ex
답변3
어느길1 하나 이상의 /
저작물을 포함하는 실행 파일에 추가합니다.명령 이름에 문자가 있으면 /
특정 파일을 실행하도록 요청하고 해당 파일을 찾을 특정 위치를 지정한다는 것을 쉘에 알립니다. 이는 쉘이 기대하는 구문의 일부입니다. 대부분의 다른 상황에서는 (상대) 경로에 문자가 포함되지 않는 것이 허용됩니다 /
.
현재 디렉터리에 없는 실행 파일의 경우그게 다로 가는 길이야. 최소한 하나의 /
. 이는 덜 익숙하더라도 다른 디렉토리에서 파일을 실행하는 것을 더 간단하게 만듭니다.
절대 경로--좋다
/mnt/f/C_F/ex
--로 시작합니다/
.상대 경로다른 디렉토리의 파일로--
C_F/ex
디렉토리 에 있을 때 시작 부분이 아니더라도/mnt/f
항상 를 포함하십시오 ./
a가 없는 상대 경로는/
현재 디렉터리의 파일을 식별하는 파일 이름일 뿐입니다. (그 반대는 사실이 아닙니다. 상대 경로에는/
여전히 현재 디렉터리의 파일을 참조하는 가 포함될 수 있습니다. 아래를 참조하세요.)상대 경로가 작동하려면 실제로 원하는 파일을 참조해야 하며, 상대 경로가 원하는 파일을 참조하는지 여부에 유의하세요.현재 어떤 디렉토리에 있는지에 따라 다릅니다., 현재 디렉토리를 기준으로 해결되기 때문입니다.
실행 파일의 경우~이다현재 디렉터리에서 가장 짧은 상대 경로는 /
. 따라서 이것은 더 친숙하더라도 더 복잡한 경우입니다. 실행 파일이 있는 디렉터리에 있는 경우 해당 실행 파일에 대한 완벽한 상대 경로 임에도 불구하고 ex
를 실행할 수는 없습니다 .ex
ex
작동하지 않는 이유는 a가 포함되지 않은 명령 이름은 /
상대 경로나 다른 경로로 처리되지 않기 때문입니다. 대신에,파일 이름으로 처리되어 검색됩니다.에 나열된 디렉토리에 있습니다 $PATH
. 2
./ex
이것이 와 같은 디렉토리에 있을 때 사용하는 이유입니다 ex
.모든 디렉토리에는 .
디렉토리 자체를 참조하는 항목이 포함되어 있습니다. 이것방법을 제공합니다와 동일한 파일을 식별 ex
하지만 그 안에 a가 포함되어 /
있어 쉘이 경로로 처리하는 명령 이름으로 사용할 수 있는 상대 경로를 작성합니다.
따라서 접두사 ./
는 특별한 구문이 아니지만 단순히 현재 디렉터리에 있는 파일에 대한 상대 경로를 작성하는 두 번째로 간단한 방법이자 /
.
1 이 답변에서는 "경로"를 "경로 이름"을 의미하는 데 사용합니다. 이것은 "경로"의 가장 일반적인 사용이지만 유일한 것은 아닙니다. 내가 여기서 사용하는 "경로"라는 용어를 경로(Path)와 혼동해서는 안 됩니다.실행 가능한 검색 경로는 경로가 문자로 구분되어 나열되는 디렉토리 모음입니다 :
.$PATH
환경 변수 에서.
2 a가 포함되지 않은 명령 이름은 /
쉘 내장 및 쉘 함수와 같은 비외부 명령으로 해석될 수도 있습니다.