왜 많은 프로그램이 PATH에 있습니까?


10

적어도 데스크탑 리눅스에 대해 나를 괴롭히는 한 가지는 모든 것이 내 경로에 있다는 것입니다. 모든 의미에서, 나는 그놈 문자 맵 및 결함과 같은 것을 포함한 모든 데스크탑 응용 프로그램을 의미합니다. 이것들은 말할 명령 줄 인터페이스가 없으므로 터미널에서 정기적으로 시작하는 경우를 생각할 수 없습니다. 그렇지 않으면 전체를 입력해야하여 불편 함을 상상할 수 없습니다. 경로. 그것은 어수선한 것처럼 보이지만 아마도 그럴만한 이유가있을 것입니다.

그럼, 왜 않습니다 이런 일이? 성능이나 유지 관리성에 주목할만한 영향이 있습니까?

답변:


14

사용자가 실행하고자하는 모든 명령은 PATH에 있습니다. 그게 다야. 이 것을 명령 포함 당신이 직접 실행, 다른 사람들이 직접 실행할 명령, 그들이 다른 명령에 의해 호출되기 때문에 당신이나 다른 사람이 간접적으로 실행하는 것이 명령을. 이것은 터미널에서 실행되는 명령에만 국한되지 않습니다. GUI에서 실행되는 명령은 명령 검색 경로에서도 검색됩니다 (다시 말하면 이것이 목적입니다).

전체 경로를 입력해야하는 것은 끔찍할 것입니다. 전체 경로가 무엇인지 찾아야합니다! /usr/bin운영 체제와 함께 제공되는 대부분의 프로그램이 포함되어 있는지 또는 /usr/local/bin관리자가 수동으로 설치 한 프로그램 및 일부 핵심 코어에 속하지 않은 프로그램 이 포함되어 있는지 추적해야합니다. unix variant) 또는 다른 시스템 특정 디렉토리 또는 사용자의 홈 디렉토리에 있습니다.

비교하는 내용을 말하지 않기 때문에 "성능 또는 유지 관리 능력에 미치는 영향"에 대해서는 대답하기가 어렵습니다. 전체 경로를 어디에서나 입력 해야하는 것과 비교할 때 유지 관리의 어려움은 프로그램을 재배치하거나 OS와 함께 제공되거나 시스템 관리자가 설치 한 것보다 최신 버전을 설치하려는 경우, 당신은 어디에서나 전체 경로를 교체해야합니다. 몇몇 디렉토리에서 이름을 찾는 성능에 미치는 영향은 미미합니다.

Windows와 비교하면 더 나빠질 수 있습니다. 일부 프로그램은 실행 파일뿐만 아니라 모든 종류의 쓰레기를 PATH에 추가하고 PATH여전히 모든 프로그램을 포함하지 않는 1 마일 길이의 변수로 끝납니다. 많은 프로그램을 설치할 때 시스템 PATH에 추가되지 않습니다.


꽤 합리적인 근거처럼 보입니다. 설명 감사합니다! 프로그램 교체에 대한 약간의 의미가 있습니다. 나는 그것에 대해 전혀 생각하지 않았다. * / bin과 같은 설명이 아닌 장소에서 전체 경로를 확인하십시오.) 그래도 그들은 꽤 다른 것 같아요.
Dylan McCall

4

PATH 변수는 디렉토리 경로 목록을 포함합니다. 사용자가 전체 경로를 제공하지 않고 명령을 입력하면이 목록에 명령으로 연결되는 경로가 포함되어 있는지 확인합니다. 본질적으로 터미널이나 명령 줄에 관한 것은 없습니다.

또한 데스크탑 리눅스에 관한 것도 없습니다. 내 XP 시스템의 PATH에 % SystemRoot % \ system32; % SystemRoot %; % SystemRoot % \ System32 \ Wbem이 포함되어 있으며 아마도 대부분의 Windows 바이너리를 포함합니다.

PATH의 디렉토리는 지정된 순서대로 검색되고 일치하는 것이 있으면 중지됩니다. 시스템 디렉토리는 일반적으로 가장 높은 우선 순위를 부여하기 위해 시작됩니다. 사용자는 끝에 사용자 정의 검색 경로를 추가해야합니다.

성능과 관련하여 : 대부분의 최신 쉘은 PATH의 내용을 캐시하므로 사용자가 명령을 입력 할 때마다 디스크를 스캔 할 필요가 없습니다.


Windows PATH는 Windows와 함께 제공되는 대부분의 바이너리를 다루지 만 설치하는 일반 응용 프로그램은 일반적으로 PATH에 없습니다. (명령 행 컴포넌트가있는 앱은 PATH에 추가되지만 GUI 전용 앱은 그렇지 않습니다.)
cjm

쿨, 나는 항상 질서와 그 중요성을 생각했다. 경험상 어때요? 나는의 (거의) 모든 조합이 usr, local, bin,과 sbin(내 사용자 홈 디렉토리를 제외)를.
Emanuel Berg
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.