Linux에서 실행 파일을 실행하려면 실행 파일 앞에 항상 "./"를 입력해야 하는 이유는 무엇입니까?

Linux에서 실행 파일을 실행하려면 실행 파일 앞에 항상 "./"를 입력해야 하는 이유는 무엇입니까?

egxc를 다음과 같이 컴파일하면:

GCC x.c -o x

결과를 실행하려면 다음을 작성해야 합니다.

./x

그리고 다음을 입력하면 됩니다:

x

다음 메시지와 함께 실패합니다.

x: 명령을 찾을 수 없습니다

이는 Linux가 현재 디렉토리에서 해당 항목을 검색하지 않음을 의미합니다! 이 행동 뒤에 합리적인 문제가 있습니까?

답변1

기본적으로 현재 작업 디렉터리는 변수에 없기 때문입니다 PATH.

이는 보안/편의를 위한 조치입니다. 현재 작업 디렉토리에 cd, 등 이라는 바이너리/스크립트가 있는 경우 ls기본적으로 실행되면 매우 짜증날 것입니다.

답변2

이는 현재 디렉터리가 $PATH 변수에 없음을 의미합니다.

답변3

환경 변수 에 현재 디렉터리(단일 점으로 표시)를 추가하여 이 문제를 해결할 수 있습니다 PATH.
이를 수행하는 방법은 사용하는 쉘에 따라 다릅니다.
Bash를 사용하는 경우 홈 디렉터리의 파일 export PATH=$PATH:.에 해당 줄을 추가할 수 있습니다. csh 또는 tcsh를 사용하는 경우 홈 디렉토리의 .cshrc 파일에 해당 행을 추가하십시오 . IMHO, 가정용 데스크톱 컴퓨터의 경우 보안 측면에서 이는 허용되는 작업입니다..bashrc
set PATH = ($PATH .)

관련 정보