Difference Between bin and sbin | bin과 sbin의 차이

bin과 sbin의 차이점이 무엇인지 궁금했던 적이 있지 않나요? sbin에서의 ‘s’는 시스템을 의미해요. 따라서 시스템 바이너리가 sbin 안에 보관돼요.

이미 알고 있을 것인데, 리눅스에는 서로 다른 여러 bin 디렉토리가 있지요. 지금까지 본 것중 다양한 리눅스 폴더를 이해하기에 가장 좋은 참고자료는 man hier이에요. 이 커맨드를 사용하면 파일시스템 구조 표준(Filesystem Hierarchy Standard, FHS)에 대한 간략한 설명을 볼 수 있어요. 아래는 여러 binsbin에 대한 요약이에요.

/bin

이 디렉토리는 리눅스의 싱글유저모드(윈도우의 안전모드와 유사)에서 필요로 하고 시스템을 실행하거나 고치는 데에 사용되는 실행 프로그램들을 보관해요.

/sbin

/bin과 비슷하게, 이 디렉토리는 시스템 부팅에 필요한 커맨드를 가지고 있어요. 하지만 주로 일반 유저(non-root)가 사용하지는 않아요.

/usr/bin

실행 프로그램들이 주로 있는 곳이에요. 시스템을 부팅하거나 고치는 데에 필요하지 않으면서 로컬에서 설치되지 않는 (배포 파일을 내려받아 설치하지 않고 패키지 매니저를 사용하는 등의 경우)  대부분의 프로그램들은 이 디렉토리에 있어야 해요.

/usr/local

로컬에서 설치하는 프로그램은 대부분 여기에 보관돼요.

/usr/local/bin

로컬에서 설치하는 프로그램의 바이너리를 보관해요.

/usr/local/sbin

로컬에서 설치하는 시스템 관리 프로그램을 보관해요.

자기만의 스크립트를 만들고 모든 유저가 사용할 수 있게 하려면, /usr/local/bin에 보관하면 보통 안전할거에요. cron이나 crontab으로 스크립트를 실행하고 싶다면, 간단하게 커맨드의 전체 경로를 사용하면 돼요 (예. /home/user/command).

저는 주로 로컬 bin(~/bin)에 스크립트를 만들고, 퍼블릭으로 사용하고 싶은 커맨드들은 /usr/local/bin에다 심볼릭 링크를 만들어요. 이렇게하면 하나의 디렉토리에서 모든 스크립트를 관리하면서도 그 중 일부를 퍼블릭으로 사용할 수 있어요. /usr/local/bin$PATH에 포함되어 있으니까요.

 

#.

bin이 왜 여러 개로 나누어져 있나 싶었는데, 다 뜻이 있었군요. 최근에 ip addr이 /sbin에 있어서 일반 유저는 /sbin/ip로 실행을 해야 하고, 루트는 ip로 바로 실행이 가능한 머신이 있길래 찾아보게 됐어요. ‘usr은 평소에 쓰는 것, bin은 바이너리, s는 시스템, local은 배포 파일로 직접 설치’라고 생각하면 간단하네요.

 

원문.

Difference Between bin and sbin