실행 파일(Ubunto/Deb) 실행 시 Linux 명령줄 동작

실행 파일(Ubunto/Deb) 실행 시 Linux 명령줄 동작
@user-123:~$ Downloads/execfile-3.4/execfile
@user-123:~$ 
@user-123:~$ cd Downloads/execfileparentdir-3.4/
@user-123:~/Downloads/execfileparentdir-3.4$ execfile
execfile: command not found
@user-123:~/Downloads/execfileparentdir-3.4$ ./execfile
@user-123:~/Downloads/execfileparentdir-3.4$ 

./사용하는 구체적인 이유는 무엇입니까 execfile?

기능에 대해 묻는 것이 아닙니다 ./. 즉, 터미널에서 실행 파일을 실행하려면 현재 디렉터리의 특정 파일 주소가 필요한 이유를 알고 싶습니다. 다른 상황에서와 마찬가지로 현재 디렉토리에 있을 때 터미널이 자동으로 파일 이름을 인식하여 ./파일 이름 뒤에 파일 이름을 추가하는 대신 파일 이름을 입력하여 실행할 수 있는 이유는 무엇입니까?

편집하다:

한 가지 이유는 보안과 사용자가 실수로 다른(악성일 수 있는) 파일을 실행하는 것을 방지하기 위한 것일 수 있습니다. 그런데 아주 그럴듯한 이유인데, 그것을 위해 규칙의 일관성을 희생하고 있는 것은 아닐까? 이 문제를 처리하고 통일 규칙(현재 디렉터리의 파일 이름 예측)에 예외를 두지 않는 다른 방법은 없습니까? 사소한 교환처럼 들릴 수도 있지만, 그것이 가장 작은 교환인지 확인하고 싶었습니다.

답변1

이는 UNIX 및 Linux의 아키텍처 결정입니다. 주된 이유는 안전입니다. 단지 파일이 있는 디렉터리에 있다는 이유만으로 임의의 파일을 실행하고 싶지는 않을 것입니다. 이를 통해 실행 파일의 신뢰할 수 있는 소스를 보다 정확하게 제어할 수 있습니다.

물론 현재 디렉터리를 경로에 추가하고 MS Windows와 유사한 동작을 가질 수 있습니다. 명령은 다음과 같습니다.하지만 보안상 위험하므로 하지 마세요..

내보내기_경로=$경로:.

관련 정보