오늘 이전에는 터미널을 사용하여 디렉토리 안팎으로 이동하고 명령을 사용하여 파일 날짜를 변경했습니다 touch
. 내 Mac에 흥미로운 스크립트를 설치하고 chmod 755
그 파일을 사용하여 실행 가능하게 만든 후 터미널의 모든 기능을 깨달았습니다.
그러나 나는 /usr/local/bin
그것이 무엇인지 궁금합니다. /usr/
나는 그것이 컴퓨터 사용자라고 가정합니다. 하지만 왜 /local/
거기에 있는지 잘 모르겠습니다 . 당연히 Local Computer의 약자인데, 컴퓨터(혹은 서버)에 있으니 꼭 필요한 걸까요? /usr/bin
좋지 않을까요 ?
그것은 무엇입니까 /bin
? 이 영역이 일반적으로 터미널에 스크립트를 설치하는 데 사용되는 이유는 무엇입니까?
답변1
/usr/local/bin
일반 사용자가 실행할 수 있는 프로그램에 적합합니다.
- 이
/usr/local
계층 구조는 시스템 관리자가 소프트웨어를 로컬로 설치할 때 사용됩니다. - 시스템 소프트웨어가 업데이트되면 덮어쓰지 않도록 해야 합니다.
- 호스트 그룹 간에 공유할 수 있는 프로그램 및 데이터에 사용할 수 있지만
/usr
. /usr/local
로컬로 설치된 소프트웨어는 소프트웨어를 교체하거나 업그레이드하기 위해 설치하지 않는 한 /usr이 아닌 /usr에 배치해야 합니다/usr
.
이 소스는 설명에 도움이 됩니다.파일 시스템 계층 표준더 깊은 수준에서.
당신은 찾을 수 있습니다사용 및 남용에 관한 이 기사/usr/local/bin
또한 매우 흥미 롭습니다.
답변2
/usr/, 컴퓨터 사용자라고 가정합니다.
폐쇄.
유닉스는 원래 다중 사용자 운영체제였기 때문에 "사용자"가 아니라 "사용자,"복수형.
AT&T 유닉스 이전시스템 V 버전 4(SVR4)는 1988년에 출시되었으며 사용자 관리 도구는 기본적으로 /home
기존 위치 인 에 사용자 홈 디렉터리를 생성했습니다 /usr
. ¹ 귀하의 $HOME
디렉터리는 /usr/jfw
다음 위치에 있을 수 있습니다.시스템 3상자.
/usr
/usr/bin
경험에 따르면 /usr/lib
홈 디렉토리를 분리하는 것이 좋은 시스템 관리 방식이므로 /home
SVR4의 정책 변경으로 인해 현재 우리가 속한다고 생각하는 모든 항목은 그대로 유지됩니다 /usr
.
/usr
이 이름을 유지해야 하는 이유는 여전히 있습니다. 정상적인 대화형 사용을 지원할 수 있을 만큼 시스템이 부팅될 때까지 사용할 필요가 없는 파일이 남아 있기 때문입니다. 즉, 남은 것은사용자- 운영 체제의 주요 부분. 이것은 /usr
그것이 다른 물리적 볼륨에 있을 수 있다는 것을 의미했으며 당시에는 좋은 일이었습니다.92MB 세탁기 크기의 하드 드라이브.
초기 Unix 시스템은 어떤 이유로 /usr
볼륨을 마운트하지 못하더라도 단일 사용자 모드²로 부팅할 수 있도록 핵심 운영 체제 파일을 신중하게 보존했습니다 . /usr
루트 볼륨에는 /usr
볼륨을 다시 온라인으로 전환하는 데 충분한 도구가 포함되어 있습니다.
일부 Unix 버전은 이제 작은 임베디드 시스템이라도 기존 루트 볼륨 파일을 수용할 수 있는 충분한 공간이 있기 때문에 이 오래된 디자인 원칙을 무시합니다.그리고이 모든 것이 /usr
하나의 롤에 있습니다. ³ Red Hat Enterprise Linux, Solaris 및 Cygwin 심볼릭 링크를 통해 /bin
이러한 디렉터리 간에 더 이상 차이가 없도록 합니다 ./usr/bin
/lib
/usr/lib
.../local/... 분명히 로컬 컴퓨터를 나타냅니다...
예. 이는 아래 파일이 /usr/local
해당 단일 시스템에만 적용되어야 한다는 사실을 나타냅니다 . 공통 파일은 다른 곳에 저장해야 합니다.
이는 또한 Unix 시스템이 모두 표준화되었던 수십 년 전에 일반적으로 사용되었던 방식에서 비롯됩니다. 마찬가지로 당시의 하드 드라이브는 부피가 크고 가격이 매우 높았으며 오늘날의 표준에 비해 저장 공간이 거의 없었습니다. 비용과 디스크 공간을 절약하기 위해 Unix 시스템으로 가득 찬 컴퓨터실에서는 /usr
대부분의 콘텐츠를 NFS나 기타 네트워크 파일 공유 프로토콜을 통해 공유하므로 각 시스템에 자체 중복 복사본이 필요하지 않습니다. ⁴ 단일 시스템에 특정한 파일 상자는 아래에 배치되며 /usr/local
별도의 볼륨이 됩니다 /usr
.
이러한 역사적 유산으로 인해 /usr/local
수동으로 설치할 때 대부분의 타사 Unix 소프트웨어가 여전히 기본 설치로 사용됩니다. 대부분의 이러한 소프트웨어에서는 패키지를 다른 곳에 설치할 수 있지만 선택하지 않으면 더 구체적인 목적을 가진 다른 일반적인 설치 위치를 방해하지 않는 안전한 기본값을 얻게 됩니다.
소프트웨어를 다른 곳에 설치하는 데는 그럴 만한 이유가 있습니다. Apple의 macOS 팀은 빌드 bash
할 때 이 작업을 수행합니다.GNU Bash 소스 코드. Bash 가 /
./usr/local
/bin
또 다른 예는 이전 Linux 시스템이 GUI 소프트웨어를 분리하여 /usr/X11R6
기존 명령줄과 별도로 유지했다는 것입니다.curses
소프트웨어를 기반으로 합니다. .⁵ /usr/local
로 기본 접두사를 재정의 /usr/X11R6
하면 됩니다 .
/bin이 무엇인가요?
"바이너리"의 약어인데, 이 경우에는 "일반 텍스트가 아닌 파일"을 의미합니다. 이 파일의 대부분은실행 가능 파일Unix 시스템에서는 두 용어가 일부 집단에서는 동의어가 되었습니다. ("프레드 씨, 저를 위해 RHEL 7 바이너리를 만들어 주세요.")
/etc
Unix 시스템의 텍스트 파일은 , 등의 /usr/include
다른 위치에 있습니다./usr/share
옛날에는 쉘 스크립트(일반 텍스트 파일)도 bin
디렉토리 외부에 보관되었지만 이 경계선은 흐릿해졌습니다. 오늘날 bin
디렉토리에는 엄격하게 "바이너리"인지 여부에 관계없이 일반적으로 모든 종류의 실행 파일이 포함되어 있습니다. ⁶
각주 및 여담:
SVR4 이전의 사용자 관리 도구의 원시적 특성은 이
HOME=/usr/$NAME
체계가 소프트웨어 도구에 의해 기본값으로 시행되지 않고 관례로만 문서화되었음을 의미합니다.이 내용은 4~8페이지에서 확인할 수 있습니다.AT&T Unix System V 버전 3.2 시스템 관리자 안내서
/usr/$NAME
:여기서 AT&T가 SVR4 이전의 마지막 주요 Unix 버전에서 이전 방식을 권장하는 것을 볼 수 있습니다.이전 Unix 시스템에서는 시스템 관리자가 자신에게 더 적합한 다른 솔루션을 선택하는 것이 매우 일반적이었습니다. 사람은 사람이므로 다양한 솔루션이 발명됩니다.
/home/$NAME
표준이 되기 전에 제가 접한 한 가지 계획 은/u/$NAME
.내가 사용하는 또 다른 시스템1990년대 초반에는 사용자가 너무 많아서 모든 홈 디렉토리를 하나의 물리적 볼륨에 담을 수 없었기 때문에 , 등의 방식을 사용했던 것으로
/u1/$NAME
기억/u2/$NAME
합니다. 홈 디렉토리가 어느 디스크에 놓이게 될지는 계정을 생성할 때 어떤 디스크에 공간이 있는지에 따라 달라집니다.부팅하는 동안 macOS 상자를 길게 눌러 단일 사용자 모드로 부팅할 수 있습니다 Cmd-S. 화면이 검게 변하면 손을 떼면 연한 회색 텍스트가 나타납니다. 이는 터미널에서 실행하는 것과 같지만 GUI가 아직 시작되지 않았기 때문에 전체 화면을 차지합니다.
조심하세요, 당신은
root
...단일 사용자 모드를 종료하고 다중 사용자 GUI 모드로 계속 부팅하려면 단일 사용자 루트 프롬프트에 "exit"를 입력합니다.
Unixy 운영 체제는 여전히나타나다
/usr
실제로 요즘에는 중요한 단일 사용자 모드 파일을 제외해도 효과가 없을 것입니다. 한번은/usr
ZFS 볼륨으로 이동하여 FreeBSD 9 시스템을 부팅할 수 없도록 만든 적이 있습니다. FreeBSD 10까지는 ZFS-on-root 기능이 존재하지 않았다는 사실을 잊고캐치 22: 운영 체제를/usr
설치 하려면 파일이 필요합니다/usr
!이것은 충분히 나쁘지만
/usr
FreeBSD 9가 여전히 단일 사용자 부팅 기능을 유지하고 있었다면 이를 고칠 수 있었습니다. 단일 사용자 모드로 부팅도 되지 않고/usr
설치도 되지 않기 때문에 어떤 방식으로든 전통이 위반된 것이 분명합니다. 시스템을 다시 복원하려면 복구 CD로 부팅해야 했습니다.이는 또한 우리가 얻는 것입니다
/usr/share
. 이는 서로 다른 프로세서 유형을 사용하는 Unix 시스템 간에도 공유할 수 있는(예: NFS를 통해) 파일을 격리합니다. 일반적으로 텍스트 파일: 매뉴얼 페이지, 사전 등"X11R6"은 이 버전을 나타냅니다.X 윈도우 시스템이 규칙이 대중화되었을 때 Linux GUI의 기초를 제공했습니다. X11R6이 Linux 시스템으로 교체되면 Linux 시스템은 일반적으로 GUI 소프트웨어 격리를 중지합니다.X 조직.
원래 Unix 시스템
/etc
은/bin
.
답변3
/usr/local/bin
최신 Mac 운영 체제(BSD의 기반)의 UNIX와 유사한 루트를 보여줍니다.
- "usr"은 UNIX 시스템 리소스를 나타냅니다. 여기에는 시스템 프로그램과 라이브러리가 저장됩니다.
- "로컬"은 표준 배포판과 함께 제공되지 않고 일반적으로 사이트별로 컴파일 및 유지 관리되는 리소스를 의미합니다.
- "bin"은 바이너리 컴파일된 실행 파일을 나타냅니다.
이는 UNIX가 Linux 및 BSD로 초기 구현된 이후 변경되었지만 규칙은 그대로 유지됩니다. 이제 /usr/bin
"기본" 또는 핵심 프로그램 및 라이브러리에 사용되고 /usr/local/bin
추가 기능 및 중요하지 않은 프로그램 및 라이브러리에 사용됩니다.
답변4
/usr/local/bin
실행 파일, 특히 오픈 소스 파일의 가장 인기 있는 기본 위치입니다.
/usr
그러나 이는 Unix 시스템에서 운영 체제에 속하는 파일 계층 구조를 포함하도록 90년대 초반에 표준화되었고 따라서 해당 운영 체제를 사용하는 여러 시스템에서 공유될 수 있기 때문에 이는 잘못된 선택일 수 있습니다 .
이러한 파일은 정적이므로 /usr
파일 시스템을 읽기 전용으로 마운트할 수 있습니다. /usr/local
이 표준은 기본적으로 설계되었기 때문에 비공유이므로 기본 컴파일을 허용하기 위해 읽기 및 쓰기가 필요하고 운영 체제의 일부가 아니기 때문에 무효화되고 있습니다. /opt/local
비슷한 걸 선택하지 못한게 아쉽네요 ...