date
일반 사용자의 명령에 대한 스크립트 위치가 표시되며 다음과 같이 표시됩니다.
which date
/bin/date
그러나 루트에서 동일한 명령을 실행하면 출력이 표시됩니다 /usr/bin/date
. 왜 이런거야?
답변1
which date
다른 사용자에 대해 다른 결과가 생성 되면 root
해당 사용자의 결과도 다른 값을 가질 수 있습니다 PATH
. 일반 사용자는 /bin
이전 /usr/bin
(또는 /usr/bin
전혀 없음)과 이전 root
(또는 전혀 없음)을 경험했습니다./usr/bin/
/bin
/bin
다음 명령을 실행하여 이를 확인할 수 있습니다.
echo ${PATH}
root
루트가 아닌 사용자 로 .
이 PATH
변수는 절대 경로가 제공되지 않을 때 쉘이 명령을 찾을 콜론으로 구분된 디렉토리 목록입니다. 쉘은 나열된 순서대로 왼쪽에서 오른쪽으로 이러한 디렉토리를 검색합니다. 쉘이 디렉토리에서 명령을 찾으면 이를 실행합니다. 이 which
명령은 유사한 순회를 수행하고 찾은 첫 번째 일치 항목을 보고합니다.
답변2
$PATH
현재 로그인한 사용자에 따라 달라지는 변수 입니다 . 스크립트가 여러 디렉터리에 있는 경우 발견된 첫 번째 디렉터리가 사용됩니다. 이 경우 $PATH
루트는 다음과 같아야 합니다.
PATH="/usr/bin:/bin:...
사용자에게는 다음과 같이 표시됩니다.
PATH="/bin...