리눅스 서버에 이것저것 하다보니 이런 저런 개념들을 많이 접해서, 정리를 해두려고 합니다.
리눅스는 다중 사용자(Multi-User) 시스템이다..!
리눅스는 원래 커다란 슈퍼컴퓨터 한 대를 수십 명의 개발자가 동시에 나눠쓰기 위해 만들어졌다고 합니다.
따라서, 여러 사용자가 동시에 접속도 가능하고 각자 계정과 홈 디렉토리(/home/${username})를 가집니다.
📁 /bin (Root Bin): 시스템 기본 필수 명령어(ls, cp, mv, cat, bash 등)
📁 /usr/bin (User Bin): 리눅스 배포판에서 기본으로 제공하거나, 공식 패키지 매니저(apt, yum 등)로 설치한 공인된 도구들
📁 /usr/local/bin: 관리자가 인터넷에서 직접 다운로드해서 수동으로 갖다 놓은 사설 도구들
처음에는, 이런 개념이 부족해서 제가 사용할 kubectl이랑 kind를 /usr/local/bin에 두었다가,
저만 사용할 수 있도록 변경하면서 알게 된 개념을 정리하려고 합니다...!
1. 기존
/usr/local/bin/kubectl
/usr/local/bin/kind
👉 문제:
- 모든 사용자가 실행 가능
- 누가 어떤 버전 쓰는지 통제 안 됨
- 충돌 가능 (특히 kubectl 버전 중요함)
2. 변경
/home/uoahir/.local/bin/kubectl
/home/uoahir/.local/bin/kind
👉 해결:
- uoahir 계정 전용 실행 파일
- 다른 계정은 기본적으로 사용 못 함
- 완전히 개인 환경 분리 성공 👍
개인 환경으로 분리하기 위한 작업 !!
1. 홈 디렉토리에 .local/bin 폴더를 만들어줍니다.
mkdir -p ~/.local/bin
~ : 내 홈 디렉토리 라는 뜻이라서, /home/uoahir/.local/bin 과 같은 의미입니다.
2. /usr/local/bin 에 있는 실행파일(kubectl/kind)을 내 폴더로 옮깁니다. (관리자 권한이 필요함 ! ! )
sudo mv /usr/local/bin/kind ~/.local/bin/
sudo mv /usr/local/bin/kubectl ~/.local/bin/
3. 명령어로 인식하게 만들어야 합니다. PATH 설정 @!
파일만 옮기면, 리눅스 터미널이 kind와 kubectl을 찾을 수 없습니다.
따라서, 사용자의 설정 파일에 PATH를 지정해줘야 합니다.
.bashrc라는 파일을 vi 편집기나 nano 편집기로 열어서
마지막 줄에 PATH 설정을 추가하고 저장합니다.
vi ~/.bashrc (또는 nano ~/.bashrc)
export PATH="$HOME/.local/bin:$PATH"
PATH에 $PATH를 뒤에 붙여야, 내 폴더를 1순위로 찾고, 거기 없으면 기존 공용 폴더에서 찾게 됩니다.
$PATH를 빼먹으면, ls/cd 같은 기본 명령어도 못 쓰게 되니 ! 꼭 붙여주세요 !
4. 저장 후 .bashrc 파일을 터미널에 적용합니다.
source ~/.bashrc
아래 명령어로 PATH를 확인하면
echo $PATH
/home/uoahir/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
내 홈 디렉토리 내 ./local/bin 이 항상 우선 적용되는 걸 확인할 수 있습니다 . . !
kind랑 kubectl도 이제 자유롭게 사용할 수 있게 됩니다 . . !