cd를 사용하거나 PATH를 수정하지 않고 다른 디렉터리에서 실행 파일을 실행하는 방법은 무엇입니까?

cd를 사용하거나 PATH를 수정하지 않고 다른 디렉터리에서 실행 파일을 실행하는 방법은 무엇입니까?

제가 질문하고 싶은 내용과 비슷한 변형이 존재하는데 정확한 질문을 찾을 수 없어서 여기에 질문하겠습니다.

..cex/mnt/f/C_F/ex​ 나는 /mnt/f/C_Fby 내부에서 그것을 아주 잘 실행할 수 있지만, 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를 실행할 수는 없습니다 .exex

작동하지 않는 이유는 a가 포함되지 않은 명령 이름은 /상대 경로나 다른 경로로 처리되지 않기 때문입니다. 대신에,파일 이름으로 처리되어 검색됩니다.에 나열된 디렉토리에 있습니다 $PATH. 2

./ex이것이 와 같은 디렉토리에 있을 때 사용하는 이유입니다 ex.모든 디렉토리에는 .디렉토리 자체를 참조하는 항목이 포함되어 있습니다. 이것방법을 제공합니다와 동일한 파일을 식별 ex하지만 그 안에 a가 포함되어 /있어 쉘이 경로로 처리하는 명령 이름으로 사용할 수 있는 상대 경로를 작성합니다.

따라서 접두사 ./는 특별한 구문이 아니지만 단순히 현재 디렉터리에 있는 파일에 대한 상대 경로를 작성하는 두 번째로 간단한 방법이자 /.


1 이 답변에서는 "경로"를 "경로 이름"을 의미하는 데 사용합니다. 이것은 "경로"의 가장 일반적인 사용이지만 유일한 것은 아닙니다. 내가 여기서 사용하는 "경로"라는 용어를 경로(Path)와 혼동해서는 안 됩니다.실행 가능한 검색 경로는 경로가 문자로 구분되어 나열되는 디렉토리 모음입니다 :.$PATH환경 변수 에서.

2 a가 포함되지 않은 명령 이름은 /쉘 내장 및 쉘 함수와 같은 비외부 명령으로 해석될 수도 있습니다.

관련 정보