./는 쉘에서 무엇을 의미합니까?

./는 쉘에서 무엇을 의미합니까?

hello_world.c간단한 파일이 있어요여기. 나는 그것을하는 방법을 알아 냈습니다.

gcc -Wall -g hello_world.c -o hello 작동 중이지만 실행하면 bash hello오류가 발생합니다.hello: hello: cannot execute binary file

sh hello그런 다음 오류: hello: 1: Syntax error: "(" unexpected
./hello예상 줄이 인쇄되었습니다.

셋 다 똑같은 줄 알았는데 결과부터가 아닙니다. 왜 다른 두 개는 작동하지 않습니까? 이 외에도 ./hello이 파일을 호출하는 다른 방법이 있습니까 hello?

답변1

처음 두 번의 시도 bash hello및 에서는 파일이 셸 실행 파일임을 이러한 셸( 및 sh hello각각 )에 확신시키려고 합니다. 바이너리 파일이기 때문에 쉘은 파일을 실행하라는 지시를 받고 무엇을 해야 할지 모르기 때문에 이러한 오류 메시지를 표시합니다. 세 번째 예에서는 셸이 실행을 기대하는 것처럼 바이너리를 바이너리로 실행합니다. 이는 단순히 현재 디렉터리( )에서 바이너리를 찾을 수 있는 위치를 나타내는 표시일 뿐입니다 . 왜 필요한가요 ? 대부분의 경우 "현재 작업 디렉터리"는 변수의 일부가 아니므 로 단순히 실행해도 실행 파일을 어디에서나 찾을 수 없습니다.bashshhellohello./../$PATHhello

답변2

Linux 스크립트를 실행하기 위해 ./(점-슬래시)를 사용하는 이유는 무엇입니까?

Unix ./script 구문은 세 부분으로 설명할 수 있습니다.

Linux./ 표기법에서 애플리케이션 PATH의 역할은 현재 디렉터리가 기존 명령과의 충돌을 피해야 함을 나타냅니다.

Unix 점슬래시 및 PATH 각 컴퓨터에는 애플리케이션 경로가 있습니다. 이는 실행 가능한 명령이나 실행 가능한 스크립트가 호출될 때 운영 체제가 찾는 디렉터리 모음입니다.

익숙한 모든 내장 명령(예: ls, cat, echo, touch 및 chmod)은 애플리케이션 PATH에 있습니다. 사용자는 일반적으로 JDK 또는 Git에서 일반적으로 사용되는 프로그램을 애플리케이션 PATH에 넣습니다.

문제는 직접 작성한 스크립트를 호출하려고 하면 해당 스크립트가 애플리케이션 경로에 포함된 폴더에 저장되지 않을 수 있다는 것입니다. 즉, PATH에서 명령과 같은 사용자 정의 스크립트를 실행하면 Linux 운영 체제가 해당 스크립트를 찾지 못합니다.

Linux에서 ./의 의미 여기에 점 슬래시 ./ 기호가 들어오는 곳입니다. 이는 "현재 디렉토리에서 찾기"를 의미합니다. ./를 사용하면 Ubuntu, Fedora, SUSE 또는 사용 중인 모든 Linux 배포판에서 실행하려는 명령을 현재 디렉터리에서 찾고 애플리케이션 PAT에 있는 내용을 완전히 무시하도록 지시합니다.

관련 정보