왜 리눅스에 바이너리를 넣을 장소가 그렇게 많은가? 최소한 다음 5 가지가 있습니다.
/bin/
/sbin/
/usr/bin/
/usr/local/bin/
/usr/local/sbin/
그리고 내 사무실 상자에는 이들 중 일부에 대한 쓰기 권한이 없습니다.
이들 중 어떤 유형의 바이너리가 bin
있습니까?
~/bin/
개인적인 것들.
/usr/local/bin
됩니까?
왜 리눅스에 바이너리를 넣을 장소가 그렇게 많은가? 최소한 다음 5 가지가 있습니다.
/bin/
/sbin/
/usr/bin/
/usr/local/bin/
/usr/local/sbin/
그리고 내 사무실 상자에는 이들 중 일부에 대한 쓰기 권한이 없습니다.
이들 중 어떤 유형의 바이너리가 bin
있습니까?
~/bin/
개인적인 것들.
/usr/local/bin
됩니까?
답변:
/bin
(및 /sbin
)은 /
큰 /usr
파티션 등을 마운트 하기 전에 작은 파티션 에 있어야하는 프로그램을위한 것입니다 . 요즘 /bin/sh
은 원래 의도가 소형 임베디드 장치에 설치하는 것과 관련이있을 수 있지만, 주로 주요 프로그램의 표준 위치로 사용 됩니다.
/sbin
와 구별되는 것은 마운트 /bin
하기 전에 필요한 시스템 관리 프로그램 (일반 사용자가 일반적으로 사용하지 않는)을위한 것 /usr
입니다.
/usr/bin
배포 관리 일반 사용자 프로그램을위한 것입니다.
A는이 /usr/sbin
동일한 관계 /usr/bin
로 /sbin
에있다 /bin
.
/usr/local/bin
배포 패키지 관리자가 관리 하지 않는 일반 사용자 프로그램 ( 예 : 로컬로 컴파일 된 패키지)입니다. /usr/bin
향후 배포 업그레이드시 경고없이 수정하거나 삭제할 수 있으므로 설치하지 마십시오 .
/usr/local/sbin
당신은 아마이 시점에서 추측 할 수로,이다 /usr/local/bin
등 /usr/sbin
으로 /usr/bin
.
또한, /opt
모 놀리 식 비 분배 패키지를위한 것도 있지만, 그것들이 적절히 통합되기 전에 다양한 배포판이 그놈과 KDE를 넣었습니다. 일반적으로 Oracle과 같이 거대하고 제대로 작동하지 않는 타사 패키지를 위해 예약해야합니다.
~/bin
사용자로 PATH에 해당 디렉토리를 추가하십시오 ... 메모 주셔서 감사합니다, 심각하게 오래된 주석을 삭제했습니다.
PATH
변수, 그리고 echo $PATH
나를 위해 보여줍니다 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
에서 실행 즉, /usr/local/bin
사람 인수의 우선 순위가에 /usr/bin
있는 것들보다 우선합니다 /bin
.
Wikipedia 의 Filesystem Hierarchy Standard 항목은 내가 받았을 때 같은 질문에 대답하는 데 도움이되었으며 매우 설명적인 표가 있습니다.
해당 페이지에서 발췌 1 :
/bin Essential command binaries that need to be available in single user mode; for all users, e.g., cat, ls, cp. /usr/bin Non-essential command binaries (not needed in single user mode); for all users. /usr/local Tertiary hierarchy for local data, specific to this host. Typically has further subdirectories, e.g., bin, lib, share /usr/sbin Non-essential system binaries, e.g., daemons for various network-services. /sbin Essential system binaries, e.g., fsck, init, route.
1 2019 년 6 월 19 일에 확인 함. 영구 링크 .
이 sbin
디렉토리에는 일반적으로 시스템 관리인 프로그램이 들어 있습니다. 일반 사용자를위한 프로그램은 절대 들어 가지 않아야합니다.
시작하는 동안 몇 개의 프로그램이 필요하며 /bin/
또는로 끝납니다 /sbin/
. 파일 시스템을 마운트하기 전에 사용 가능해야합니다. 상황이 좋아 mount
하고, fsck
그 확인하고 시스템이 있어야 파일을 마운트해야합니다.
대부분의 패키지 프로그램은 /usr/bin/
및로 끝납니다 /usr/sbin/
. 루트 파일 시스템 이외의 파일 시스템에있을 수 있습니다. 경우에 따라 네트워크 마운트 드라이브에있을 수 있습니다.
지역 프로그램 및 스크립트에 소속 /usr/local/bin/
하고 /usr/local/sbin/
. 이것은 그것들이 명백히 비표준이며, 현장에서만 사용 가능하다는 것을 식별합니다.
자세한 man hier
설명은 배포에 권장되는 파일 시스템 계층 구조에 대한 설명을 제공하는 명령 을 실행하십시오 . Wikipedia 의 파일 시스템 계층 에 대해 읽을 수도 있습니다.
1970 년대에, UNIX
모든 공식 실행했다 /bin
및 /usr/bin
사용자 홈 디렉토리 아래에 위치했다 (예 /usr/dmr
) 사용자뿐만 아니라 다른 사람에 대한 관심되었을 수 있습니다 자신의 바이너리를 저장하는 데 사용할 수였습니다.
이 개방의 결과는 /usr/bin
문서화되지 않은 소프트웨어의 정크 야드이었고, 그래서는 Stephen Bourne
썼다 cron script
매일 밤 새로운 바이너리 검사 그뿐만 아니라 자신의 문서를 업데이트하지 않고 업데이트 된 문서상의를하지 않았거나 모든 바이너리를 제거했습니다.
1970 년대 후반, /usr/bin
OS 기반 배포판에 통합되었고 사람들 /usr/local/bin
은 이전 공개 목적으로 사용 하기 시작했습니다 /usr/bin
.
잠시 후 sysadmins 는 네트워크에서 가져온 소프트웨어 (예 : USENET) /usr/local/bin
를 저장 하는 데 사용 non-local
했으며 UNIX 회사는 /usr/bin
다시 한 번 같은 실수를 반복하지 않기 때문에 1987 년경 모든 UNIX 회사가 동의 한 파일 시스템 계층 회의가있었습니다. 포기하고 대신 /usr/local/bin
사용 /opt/<vendor>/bin
합니다.
불행히도 Linux 배포판은이 결정을 따르지 않았습니다 ....
/opt
UNIX에 관한 것이 아니라 Linux에 관한 질문에 대답 하지 않습니다. "왜 자동차에 4 개의 바퀴가 있습니까?"라고 대답하는 것과 같습니다. "자전거에는 2가 있습니다! 슬프게도 자동차에는 없습니다." OP가 자동차에 왜 4가 있는지 이해하는 데 도움이되지 않습니다.
/usr/sbin/
.