Login Shell : 계정/암호를 입력하여 Shell 실행하는 것. ex) ssh 로그인 / GUI에서 로그인
Non-login Shell : 로그인 없이 실행되는 Shell. ex) ssh 접속 후 bash 를 다시 실행하는 경우, GUI에서 터미널을 띄운 경우 sudo su 로 계정 변경하는 경우
[ 파일 로드 순서 ]
1. /etc/profile
: /etc/profile.d 디렉토리 안의 모든 쉘 스크립트 실행시킴. /etc/profile.d 엔 vim, qt, lang 등 다양한 설정이 sh 파일 형태로 존재. 쉘에 로그인하면 일단 이 sh 파일을 모두 실행시키는 것.
2. ~/.bash_profile or ~/.profile
: 계정 디렉토리에 있는 .bash_profile or .profile 로드. 이 파일들은 계정에 종속적이기 때문에 계정 디렉토리에 존재하므로 ~/.bash_profile or ~/.profile 파일을 로드하게 되는 것. PATH 같은 환경변수를 설정할 때 이 파일을 수정하는 이유가 여기에 있다.
3. ~/.bashrc
: 계정 디렉토리에 있는 .bashrc 파일 로드. 이 파일은 로그인과 상관없이 bash 콘솔을 새롭게 열 때 실행됨. 파일 안에는 아래와 같은 구문이 있는데, /etc/bashrc 파일을 실행하라는 뜻.
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
4. /etc/bashrc
마지막으로 /etc/bashrc 파일 실행. 이 파일도 /etc/profile 과 마찬가지로 계정과 상관없이 전역적으로 영향을 미침.
[ /etc/profile , /etc/bashrc ]
이 파일들은 계정과 상관없이 전역적 설정
[ ~/.profile, ~/.bashrc ]
계정 디렉터리로 가면 .bashrc와 .bash_profile or .profile이라는 2개이 파일이 있다.
.bash_profile이란 bash로 로그인 할 때만 로드된다.
반면 .profile은 bash와 상관없이 로그인 하면 로드된다.
두 개 중 하나만 로드되며 bash로 로그인하면 .bash_profile만, bash 외 쉘로 로그인하면 .profile만 로드된다.
이 파일들은 공통적으로 환경변수를 세팅할 때 사용하고, 차이점은 실행되는 시점이 다르다는 것이다
1) .profile : 로그인 되는 시점에 실행 (Login Shell). bash와 상관 없는 것들을 넣는다. 2) .bash_profile: Bash로 로그인 되는 시점에 실행 (Login Shell). 3) .bashrc : 새로운 콘솔을 열 때 실행 (Non-login Shell). 로그인 없이 Bash가 실행될 때 로드된다. bash 쉘이 아닌 경우 각 쉘에 맞는 cshrc, tcshrc, kshrc 파일 등이 동일한 역할을 한다.
[ 환경변수 설정 ]
전역 파일 설정 :
환경설정은 /etc/profile에, 기타 함수나 alias 설정은 /etc/bashrc에..
/etc/profile :
# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc
/etc/bashrc :
# System wide functions and aliases
# Environment stuff goes in /etc/profile
[ 사용자 계정 파일 설정 ]
사용자 디렉터리에 있는.bash_profile또는.profile과.bashrc가 위의 전역 파일들에 대응된다고 볼 수 있다. 다만 로드 순서는 전역 파일이 먼저고 사용자 파일이 그 다음이다. 두 파일에서 중복되지 않는 내용들은 둘 다 적용된다고 볼 수 있다. 하지만 만약 내용이 중복된다면 사용자 계정 파일의 내용이 우선된다.
가급적 사용자 계정 디렉터리에 있는 환경설정 파일을 수정하고, 전역 설정을 변경해야 하는 경우에도 직접 전역 파일을 건드리지 말고 사용자 계정의 환경설정 파일 내에서 연속성을 유지할 수 있도록 수정해야 한다.
ex) PATH를 수정해야 하는 상황에 놓였을 때, /etc/profile 를 직접 수정하는 것이 아니라 ~/.profile을 아래와 같이 전역 설정을 기반으로 연속적으로 수정한다.
Ex] > chmod 755 start.sh start.sh 파일에 대해 유저는 읽기(4) 쓰기(2) 실행(1), 그룹은 읽기(4) 실행(1), 기타는 읽기(4) 실행(1) 권한을 부여
6. 파일 및 폴더의 소유자 변경
chown 소유계정:소유그룹 파일명
ex) chown jboss:jboss start.sh
start.sh 파일에 대한 소유권을 jboss 계정, jboss 그룹으로 바꾼다.
7. 파일 읽기
cat 파일명;
8. 파일 찾기
find -name '*log*'
: 현재 디렉토리 하위에서 log 문자열이 포함된 파일명 기준으로 찾기
* grep
: 보통 grep 만 사용하는 경우는 드물고 파이프(|)와 같이 사용함.
Ex] grep '기준이되는문자열' grep -v '제외시킬 문자열' grep -e '기준문자열1||기준문자열2' grep -A 3 -B 1 '기준이되는문자열' : -A(after) 기준문자열 뒤로 3줄 -B(before) 이전 1줄까지 출력 cat '파일' | grep '파일내에 찾을 문자열'
9. 삭제
파일 제거
rm 파일명
디렉토리제거
rmdir 디렉토리명
파일 및 디렉토리 전부삭제
rm -rf 디렉토리명
프로그램설치
yum : CentOS
apt : Ubuntu
10. 압축
.zip 파일 현재위치에 풀기
> unzip file.zip -d .
11. 복사 관련
1) directory 통째로 복사
cp -r ./directory .
(omitting ~ 관련 에러가 날 경우 -r 옵션주기)
<mysql 관련>
1. mysql 접속
mysql -u mysql아이디 -p
2. 데이터베이스(스키마) 보기
show databases;
3. use 데이터베이스명(스키마);
4. 테이블목록 보기
show tables;
[vi (linux visual editor) 관련]
1. vi 실행
vi 파일명
* 좌측 line number 보기
:set number
2. 문서 끝으로 이동
G (입력모드아닌 상태에서)
:$
2-1. 문서 첫 부분으로 이동
gg (입력모드아닌 상태에서)
3. 특정 문자를 찾아 해당 문자 위치로 이동
3-1. 순차검색
:/ 찾을문자열
3-2. 역순검색
:? 찾을문자열
3-1. 문자 찾기 커서 이동(이전/다음 문자로 이동)
방향대로 이동: n
역방향으로 이동: N
Ex] server.log 파일에서 exception 이 들어간 문자열을 vi 모드에서 찾고싶은 경우
1. 문서의 끝에서 부터 찾기(backward 방향으로 서칭하기) > vi server.log > :$ >:?exception n (현재 탐색 방향(backward)으로 이동하며 exception 문자열이 포함된 부분으로 커서 이동 N (현재 탐색 방향과 반대방향(forward)으로 이동하며 exception 문자열이 포함된 부분으로 커서 이동
2. 문서의 시작점부터 찾기(forward 방향으로 서칭하기) >vi server.log (입력모드 아닌 상태에서) gg >:/exception n (현재 탐색 방향(forward)으로 이동하며 exception 문자열이 포함된 부분으로 커서 이동 N (현재 탐색 방향과 반대방향(backward)으로 이동하며 exception 문자열이 포함된 부분으로 커서 이동