리눅스 환경에서는 윈도우의 환경변수와 같은 정보를 로드하는 파일들이 bash 와 profile 로 볼 수 있다.
그런데 찾다보면 관련된 파일들이 여러곳에 다양하게 있는데 환경변수 값을 입력할 때에 어느 곳에 입력을 하는게 맞는지 모르는 경우가 많다.
우선 스크립트 내용을 확인하기 전에 Login shell과 Non-Login shell의 차이를 확인해야 한다.
Login Shell vs Non-Login Shell
Login Shell
Login Shell은 shell에 접속할 때 로그인을 요청하는 경우를 말한다. 로그인을 한 시점에서만 실행하는 shell script를 분리하여 관리 하려는 목적에서 그렇다고 생각 할 수 있다.
그리고 사용자의 계정에 연결되는 script 이므로 ~/.profile, ~/.bash_profile 이 사용된다.
Non-Login Shell
Non-Login Shell은 로그인을 요구하지 않는 모든 접근을 말한다. 간단히는 터미널을 통해 실행하는 것을 말한다.
Shell script 로드 순서
내부적으로 /etc/profile.d/*.sh 를 실행한다.
.bash_profile 이 있으면 .profile은 로드하지 않는다. 사용자별로 설정할 정보를 입력한다.
.profile 에서 .bashrc를 실행한다. 즉, .bash_profile 파일을 생성하고 별도의 정의가 없으면 .bashrc는 실행되지 않을 수 있다.
그러므로 특별한 사용목적이외에는 그냥 .profile을 쓰는게 맞지 않을 까 생각한다.
3. ~/.bashrc
터미널 세션이 열릴 때마다 실행된다. conda를 설치한 경우 터미널이 실행될때마다 기본 base 환경이 실행되도록 여기에서 정의되어 있다.
내부에서 /etc/bashrc를 실행한다.
4. ~/.bash_aliases
명령어 alias를 별도로 관리하려면 .bash_aliases 파일을 생성해서 명령을 정의하면 편리하게 사용 할 수있다.
.bashrc 내부에서 실행된다.