/ bin, / sbin, / usr / bin, / usr / sbin, / usr / local / bin, / usr / local / sbin의 차이점


282

명령 파일이있는 6 개의 디렉토리가 있습니다. 이들은 /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin/usr/local/sbin.

이것들의 차이점은 무엇입니까? 직접 스크립트를 작성하는 경우 어디에 추가해야합니까?


관련 :



@Keelan 귀하의 질문은 1 년 이상 전에 게시 한 질문에 가깝습니다 : askubuntu.com/questions/830074/…
WinEunuuchs2Unix

답변:


348

이에 대해서는 Linux파일 시스템 계층 표준 (FHS)을 참조하십시오 .

  • /bin: /usr파티션을 마운트 하기 전에 사용할 수있는 바이너리의 경우 . 초기 부팅 단계에서 사용되는 간단한 바이너리 또는 단일 사용자 모드 부팅에서 사용할 수있는 바이너리에 사용됩니다. 같은 바이너리 생각 cat, ls

  • /sbin : 동일하지만 수퍼 유저 (루트) 권한이있는 바이너리에 필요합니다 .

  • /usr/bin: 첫 번째와 동일하지만 일반적인 시스템 전체 바이너리 입니다.

  • /usr/sbin : 위와 동일하지만 수퍼 유저 (루트) 권한이있는 바이너리에 필요합니다.


직접 스크립트를 작성하는 경우 어디에 추가해야합니까?

위의 어느 것도 아닙니다. /usr/local/bin또는 /usr/local/sbin시스템 전체에서 사용 가능한 스크립트를 사용해야합니다 . local경로는 시스템 패키지 (이것이 관리하지 의미합니다 오류 데비안 / 우분투 패키지).

를 들어 사용자 범위의 스크립트 사용 ~/bin(홈 디렉토리에 개인 bin 폴더를).

FHS는 다음과 /usr/local같이 말합니다 .

이 호스트관련된 로컬 데이터의 3 차 계층 . 일반적으로 추가 하위 디렉토리 (예 :, bin/) lib/share/있습니다.


따라서 / bin은 모든 코어 파일이 설치된 위치입니다. ls, cat, pwd 등? 그렇다면 / usr / bin은 사용자가 설치 한 앱이 어디에 있습니까? / usr / bin에 무엇이 있어야하는지에 대한 예는 무엇입니까?
Patoshi パ ト シ

1
스크립트를 배치 /bin하면 문제가 발생합니까? 귀하의 답변에 따라 스크립트를 옮겼지만 여전히 궁금합니다.
Rumesh

5
@RumeshSudhaharan 패키지 관리가 관리하기 때문에 그렇게해서는 안됩니다. 다른 패키지도 해당 경로를 사용하려는 경우 파일을 덮어 씁니다. 패키지의 파일은 (적어도 공식 저장소의 경우) 겹칠 수 없으므로 로컬 경로에 설치할 때 더 안전합니다. 또한 귀하의 편의와 안전을위한 것입니다. 로컬 경로에서는 그렇게 나쁜 방식으로 시스템을 망칠 수 없으며 실수로 시스템 바이너리를 교체 할 수 없습니다.
gertvdijk

8
오류 페이지의 설명이 마음에 Severity:Serious Certainty:Certain
듭니다

1
나는 / usr / local / bin에 파일을 넣고 실행할 수 있지만 편집 할 수없고 ls -la아무것도 보여주지 않는다
M. Reza Nasirloo

6

나는 1 년 전 비슷한 질문을했다 : 내 bash 스크립트를 배치하는 가장 좋은 디렉토리?

바이너리를위한 시스템 디렉토리

man hier(계층 구조)는 모든 디렉토리를 나열합니다. 이진 파일만을 얻으려면 다음을 사용하십시오.

$ man hier | grep -E 'bin$|sbin$|^.{7}(/bin)|^.{7}(/sbin)' -A2

       /bin   This directory contains executable programs which are needed in single user
              mode and to bring the system up or repair it.

--
       /sbin  Like  /bin,  this  directory  holds commands needed to boot the system, but
              which are usually not executed by normal users.

--
       /usr/X11R6/bin
              Binaries  which  belong  to the X-Window system; often, there is a symbolic
              link from the more traditional /usr/bin/X11 to here.
--
       /usr/bin
              This  is the primary directory for executable programs.  Most programs exe
              cuted by normal users which are not needed for booting or for repairing the
--
       /usr/local/bin
              Binaries for programs local to the site.

--
       /usr/local/sbin
              Locally installed programs for system administration.

--
       /usr/sbin
              This directory contains program binaries for  system  administration  which
              are  not  essential  for the boot process, for mounting /usr, or for system

자신 만의 스크립트를 어디에 두어야합니까?

모든 사용자가 스크립트에 액세스 할 수 있도록에 넣을 수 있습니다 /usr/local/bin. sudo여기에서 파일을 추가 / 변경 하려면 액세스 권한 이 필요 합니다. 참조 : 사용자 정의 Linux 스크립트를 배치하기위한 표준 장소가 있습니까?

자신의 사용자 ID 스크립트의 경우에 넣으십시오 /home/YOUR_NAME/bin. 경로를 자동으로 설정하려면 먼저이 디렉토리를 작성하고 터미널을 다시 시작해야합니다 ~/.profile. 참조 : $ PATH에 / home / username / bin을 추가하는 방법?


내가 아는 것

Ask Ubuntu 에서 더 복잡한 bash 스크립트를 가져 와서 설치 스크립트로 설정하는 것을 고려하고 있습니다 github. 몇 가지 예는 다음과 같습니다.

내가 생각하는 스크립트가 설치되어 있어야 /usr/bin는 $ PATH에있는,하지만 난 아직 적절한 위치에 확실하지 않다.


1
귀하의 노력에 감사하지만 "알지 못하는 것"부분을 제외하고 gertvdijk의 답변을 반복했습니다.
danzel

1
@ danzel 중요한 부분은 man hiergertvdijk의 답변이 해결하지 못한 부분이라고 생각합니다 . 즉, 웹에서 읽을 필요없이 명령 줄에서 디렉토리 계층 구조를 얻을 수 있습니다 (예 : 여기).
WinEunuuchs2Unix

1
흥미로운 정보입니다. 동의합니다. 그러나 gertvdijk는 이미 파일 시스템 계층 표준 ( man hier정보 적으로 불충분 한 IMO 발췌)을 언급했습니다 . 그러나 이것은 내 개인적인 의견 일 수 있습니다.
danzel 2018 년

@danzel 웹 사이트가 하드 드라이브에있는 것보다 심도있는 분석을한다는 데 동의합니다. 인터넷에 의존하지 않고 하드 드라이브에 정보가 있음을 지적하려고합니다. 또한 인용 wikipedia 링크가 누락/usr/X11R6/bin 되어 /usr/local/bin있으며에 포함되어 man heir있습니다.
WinEunuuchs2Unix 2018 년

@ WinEunuuchs2Unix, 마지막 파라; /usr/local/bin패키지 관리자가 아니기 때문에 어떻습니까?
Pacerier
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.