PATH
변수 값에 대한 모범 사례 또는 최소한 규칙을 찾고 있습니다 .
특히 알고 싶어요
- 값에 , 및 디렉토리 의 선호/권장 순서가 있습니까
/bin
?/usr/bin
/usr/local/bin
PATH
- 루트가 아닌 사용자의 경우 및/또는 변수를 포함하면
/sbin
단점/usr/sbin
이 있습니까 ?/usr/local/sbin
PATH
(1)과 관련하여, 나의 무지한 의견은 이러한 경로가 순서대로 나타나야 한다는 것입니다.
..:/usr/local/bin:...:/usr/bin:...:/bin:...
... PATH
변수에서. 여기서의 아이디어(있는 경우)는 /usr/local/bin
로컬 설치가 .NET에도 존재할 수 있는 명령을 "로컬" 재정의할 수 있다는 것 입니다 /usr/bin
. 같은 이유로(이제는 실제로 확장되었습니다!) /usr/bin
전통적으로 에 위치했던 명령에 대한 적용 범위입니다 /bin
.
위 내용의 99%는 환상이라는 것을 깨달았습니다. 그래서 내가 이 질문을 하는 것이다.
*/sbin
마찬가지로 환각적인 방식으로 디렉토리의 명령은 수퍼유저 권한을 가진 사람들을 위한 것이며 일반 사용자가 해당 명령을 사용할 수 있게 되면 그들의 작은 마음이 혼란스러울 것이라는 개념이 생각나는 것 같습니다 . 즉, PATH
일반 사용자를 위한 변수에는 */sbin
경로가 포함되어서는 안 됩니다.
그럼에도 불구하고 나는 변수의 초기 설정( 각 사용자가 자신의 쉘 초기화 스크립트를 실행하기 전에 얻는 설정을 */sbin
의미함)에 경로가 포함된 시스템을 본 적이 없으며 이것이 왜 그런지 알고 싶습니다. 경우 .PATH
PATH
답변1
- 예, 아니오. 주문에는 특별한 규칙이 없습니다. 더 간단하게: 도구가
xyz
내부에/bin
있고/usr/bin
동일한 도구에 대한 링크가 아니라 실제로 다른 도구인 경우 기본적으로 어떤 도구를 실행해야 합니까?
그렇습니다. “지역 우선”이 그 결정에 큰 역할을 했습니다. 따라서 제안은 /usr/local/bin:/usr/bin:/bin
의미가 있습니다. 하지만 실제로 보장을 받을 수 있는 경우는 거의 없습니다. 이론상으로는 가능하지만 실제로는...
수퍼유저가 더 나은 버전을 찾더라도 "표준 도구는 배포 수준에서 유지되어야"하기 때문에 ls
시스템 전체에 일반 버전으로 설치되거나 /bin
전혀 설치되지 않습니다. 상용 버전의 Linux를 사용하는 경우 다른 버전의 시스템 도구를 설치하는 것이 법적으로 금지되어 있습니다.
직접 설치할 수 있지만 이 경우 새 버전이 해당 버전으로 이동하므로 /home/user/bin
이것이 실제로 가능한 적용 범위의 유일한 소스입니다.
/sbin
/usr/sbin
, 대신 관리자와 일반 사용자를 위해 예약되도록 설계된 도구 도 있습니다 . 일반적으로 루트의 개인 경로(예: )에 포함됩니다/root/.bashrc
.
따라서 당신 말이 맞습니다. 이는 주로 일반 사용자를 혼동하지 않고 유혹하지 않기 위한 것입니다.