Mountain Lion에서 명령을 실행하려면 왜 ./가 필요합니까?

Mountain Lion에서 명령을 실행하려면 왜 ./가 필요합니까?

가능한 중복:
경로를 제공하는 동안 "/", "./", "../"는 무엇을 나타냅니까?

./Mountain Lion에서 명령을 실행하려면 왜 필요한가요 ?

예를 들어, mysql을 사용할 때 터미널에 다음을 입력해야 합니다.

./mysql -u itsme -p

또한 명령줄 응용 프로그램을 만들고 파일을 실행 가능하게 만들고 ./다음과 같이 명령을 실행해야 합니다.

./myawesomeapp dothis

현재 디렉토리를 의미한다는 것은 알지만 ./, 이를 사용하지 않고 어떻게 명령을 실행할 수 있습니까?

답변1

바이너리가 포함된 디렉터리를 환경 변수에 넣으면 PATH경로(예: ./) 를 제공하지 않고도 해당 디렉터리를 호출할 수 있습니다.

나는 아마도 bash를 쉘로 사용하고 있을 것이라고 생각합니다(실행하여 확인할 수 있습니다 echo $SHELL). 그렇다면 다음을 추가하세요..bashrc

export PATH=$PATH:/whatever/path/you/want/to/add

답변2

환경 변수에 나열된 디렉터리 중 하나에 실행 파일을 설치해야 합니다 $PATH.

echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin

$PATH파일을 수정하여 조정하세요 ~/.profile.

export PATH=$PATH:/Users/me/bin

./추가하여 항상 을 무시할 수 있지만 이는 보안 문제가 될 수 있습니다. 개인 컴퓨터가 아닌 경우 서버를 운영하는 동안 나쁜 습관을 이어갈 때..$PATH

답변3

$PATH 변수에 추가하는 것이 가능하지만 .그렇게 하지 않는 것이 좋습니다. 파일 시스템의 임의의 위치를 ​​돌아다니며 프로그램을 실행할 것으로 생각되는 항목( vi, emacs, ls, ps등)을 입력하면 로컬 디렉터리에 있는 파일이 실행 후보가 됩니다. 운이 좋지 않다면, 그것은 당신이 실행하고 싶었던 프로그램이 전혀 아닙니다. 그리고 로 실행한다면 상황 은 훨씬 root더 나쁩니다. 물론 그렇지 않으면 실제 ls가 아니라는 것이 분명해지며 사용자는 상황 조사를 시작할 것입니다. [1]lsls

대신 실행 파일이 있는 위치에 절대 경로를 추가해야 합니다(예 /projects/mycurrentprojects/bin: 또는 "홈 기준" ~/bin). 모든 상황에서 경로가 작동하려면 home\mats\bin[분명히 자신에게 맞는 사용자 이름을 사용하여]를 사용하는 것이 좋습니다. . 이렇게 하면 특정 디렉터리 집합에 있는 파일만 적용 가능하며, 사용자가 어디에 있든 해당 특정 디렉터리에 있는 프로그램만 "실행 가능한 후보"로 선택됩니다.

[1] 예, 여기서는 검색 순서와 기타 다양한 요소도 중요하다는 것을 알고 있습니다. 그러나 어떤 반대 의견이 있더라도 "현재 디렉터리"를 추가하는 것은 일반적으로 좋은 생각이 아닙니다.

관련 정보