2011-03-29 7 views
1

여기에 또 다른 (아마도) 멍청한 질문이 있습니다. C로 작성된 간단한 1 파일 프로그램 (myProg.c라고 함)이 있다고 가정합시다. Linux/MacOSX에서이 프로그램을 컴파일하려면 "gcc -o haha ​​myProg.c"를 입력하십시오. 생성 된 실행 파일의 이름은 이제 "haha"입니다. 이 프로그램을 실행하려면 콘솔에 "./haha"를 입력해야합니다.Linux/MacOSX에서 C 프로그램 실행

"./"을 항상 입력하지 않으려면 어떻게해야합니까? 어떻게하면 "하하"만 입력하면 내 프로그램이 호출되는지 어떻게 확인할 수 있습니까? 나는 "haha"라는 파일의 사용 권한을 확인했으며 실행 파일이다. "./"는 실행 파일의 경로, 즉 파일이 현재 디렉토리 (".")에 있음을 나타냅니다.

답변

5

기본적으로 현재 디렉토리는 유닉스 계열 OS에서 PATH의 일부가 아닙니다. 이것은 당신이 가 있지만 경로에 현재 디렉토리를 포함하지 않는 당신의 .bash_profile 또는 .bashrc

이유에 PATH를 수정하여하지 변경해야 할 수있는 보안 조치입니다 : 루트 있다고 가정합니다, 당신은 악의적 인 사용자가 . 이 사용자는 예를 들어 자신의 홈 디렉토리에서 실행 가능한 ls입니다. 이 사용자가 무엇을보고 있으며 홈 디렉토리에 ls을 입력하고 그의 ls가 실행됩니다.

당신은 단지 그것을 변경하려면 .bashrc.bash_profile

+0

덕분에 에릭에 PATH="${PATH}:."을 추가합니다. 그것은 내 질문에 거의 답이된다. 그래도 또 다른 질문. 경로 변수가 왼쪽에서 오른쪽 방향으로 OS에 의해 처리된다고 가정하십시오. 현재 디렉토리를 추가 할 수 없습니까? " 결국 위험한 시나리오 (답변에서 언급 한 바와 같이)가 발생하지 않도록 보장해야합니다. 아니면 OS는 경로에 언급 된 모든 디렉토리를 계속 찾은 다음 루트 디렉토리에서 가장 먼 디렉토리를 선택합니까? – Neo

+0

@CRK : 발견 된 첫 번째 것이 선택되므로 마지막에'.'을두면 위험이 줄어 듭니다. 그래도 문제는 계속됩니다. 예를 들어 'mc'는이 특정 시스템에 설치되지 않습니다. 아니면'ls'을'lls'로 잘못 입력 했습니까? – Erik

+0

흠 .. 지금은 이해 .. :) 다시 한번 감사드립니다. – Neo