/bin 과 /usr/bin의 차이는?
우분투를 사용하다가 문득 /bin
과 /usr/bin
의 차이가 궁금해졌다.
궁금하던 차에 정리해보았다.
다양한 종류의 /bin
Linux와 Unix 계열의 OS에는 굉장히 다양한 .../bin 디렉토리가 존재한다.
/bin
/sbin
/usr/bin
/usr/sbin
/usr/local/bin
/usr/local/sbin
이런 디렉토리들은 왜 나눠져있고, 그 역할들은 무엇일까?
/bin
을 분석해보자($ man hier
명령어)
터미널 또는 콘솔 창에서 다음의 명령어를 입력하면, Linux, Unix 계열의 file hierarchy에 관한 man page가 나온다.
$ man hier
'/'(root)
부터 '/var'
까지 자세한 설명을 볼 수 있다.
여기서 우리가 궁금해하는 '/bin'
디렉토리에 대한 설명을 볼 수 있었다.
'/bin'
user utilities fundamental to both single-user and multi-user environments
해석하자면, "단일 사용자에게나 다중 사용자에게 모두 기본적으로 필요한 User 유틸리티" 가 되겠다.
보통 우리가 터미널, 콘솔 창에서 실행하는 명령어들은 이곳 '/bin'
디렉토리에 정리되어 있다.
그렇다면 필수적인 저 유틸리티들이 왜 각기 다른 /bin
디렉토리에 나눠져 있는 걸까? 또 /sbin
은 뭘까?
/sbin
의 정체 & /bin
이 나눠져 있는 이유와 각 역할들
/sbin
의 정체
$ man hier
명령어를 이용하면 우리가 궁금해하던 /sbin
의 정체를 파악해볼 수 있다.
'/sbin'
system programs and administration utilities fundamental to both single-user and multi-user environments
해석하자면, "단일 사용자에게나 다중 사용자 환경에게 모두 기본적으로 필요한 System Program과 관리 유틸리티" 이다.
/bin
과는 큰 차이가 없다. 다만, 저 안에 들어있는 프로그램이 일반 user들이 잘 쓰지 않는 System 관리를 위한 것이라는 점이 다르다.
그리고 저 유틸리티를 실행하기 위해서는 root 권한 이 필요하다.
/bin
이 나눠져 있는 이유와 각 역할들
/bin
일반적으로 아주 기본적인 프로그램이 위치, 특히 콘솔에서 필요로 하는 것들과 리눅스가 돌아가기 위해 가장 최소로 필요한 프로그램들이 보관되어 있다. 덧붙여, /usr 파티션이 마운트되기 이전에 사용할 수 있는 바이너리 파일들이 저장되어 있다. 이에 속하는 바이너리 파일로는 흔히 쓰는cat
명령어나ls
명령어 등이 위치한다.
/sbin
/bin
과 같은 역할을 한다. 그러나 실행하기 위해서는 root 권한이 필요하다.
/usr/bin
/bin
과 유사한 역할을 한다. 콘솔에서 확장된 프로그램이 들어간다./bin
과의 가장 큰 차이점은 general-system-wide 범위에서 사용가능하다는 점이다. 이에 속하는 바이너리 파일로는sudo
명령어,vi
명령어 등이 위치한다.
/usr/sbin
/usr/bin
과 유사한 역할을 한다. 그러나 실행하기 위해서는 root 권한이 필요하다./usr/local/bin
이곳에 위치한 바이너리 파일들과 스크립트들은 일반 사용자를 위한 프로그램이다. 다만, 이 프로그램들은 distribution package manager에 의해 관리되지 않는다. 예를들어, 사용자 본인이 직접 local directory에서 compile한 프로그램(logically compiled program)이라면, 절대로/usr/bin
에 위치시켜선 안된다. 추후 설치하는 스크립트 등에 의해 아무런 경고 없이 업그레이드되거나, 삭제될 수 있기 때문이다. 따라서 이런 프로그램들은/usr/local/bin
디렉토리에 위치해야 한다./usr/local/sbin
/usr/local/bin
과 유사한 역할을 한다. 다른/sbin
들과 마찬가지로 실행하기 위해서는 root 권한이 필요하다.~/bin
마지막으로 소개할/bin
디렉토리이다. 이 폴더는 있을 수도, 없을 수도 있다. 이 디렉토리에 들어간 프로그램과 바이너리 파일들은 user-scoped 이다. 즉, 현재 홈 디렉토리의 이름을 가진 사용자에게만 한정된 바이너리 파일들이다. 따라서 여기에 설치되는 바이너리 파일들은 user를 구분한다.
마무리
이렇게 해서 /bin
디렉토리의 다양한 종류를 분석해보고 각각에 속하는 명령어들을 알아보았다.
앞으로는 잘 구분해서 헷갈리는 일이 없도록 잘 정리해보자.
참고
'IT > OS' 카테고리의 다른 글
[Wiki] Ubuntu에서 bash_profile 파일을 찾는 경우. (0) | 2018.02.24 |
---|---|
[Wiki] ubuntu에서 deb 패키지 설치 방법 (0) | 2018.01.11 |
[Linux] VirtualBox에 Ubuntu Server 16.04 (우분투 서버) 설치하기 (0) | 2017.12.27 |
[Wiki] ssh 명령어 접속 오류 시 대처법 (0) | 2017.06.09 |
[Ubuntu/Qt] Ubuntu 16.04 LTS에서 Qt 5.6에서 한글 입력이 안되는 경우 (2) | 2017.01.26 |