Shell, 변수


1. Shell 및 shell script

shell script< 컴퓨터 언어관련 코딩하는 거라고 생각하면 편함 c java 이런건 모르더라도 shell script 정도는 알아둬야 한다.
shell : 명령어 해석기
unix 주요 shell

 

1. bash(bourne again shell) : 리눅스의 기본셀. 편리한 사용자 인터페이스 본셀과 비교하여
확장된 문법제공.
본셀과는 기본적으로 호환됨. 명령행 편집기능 제공. GNU 프로젝트에 의해 만들어지고 배포됨.

2. sh(bourne shell) : steven bourne
개발한 최초의 대중화 유닉스
명령행 편집기능을 제공하지 않는다. (리눅스는 안쓴다.)

3. csh(c shell) : billy joy
의해 개발된 셀로 프로그래머들이 선호하는 . (사실상 아에 다른놈)
linux
기본셀인 본셀과는 호환되지 않는다.(bash 호환X) 요놈도 yum으로 설치

4. ksh(korn shell) : david korn
개발. 사용자 인터페이스가 뛰어나고 본셀과도 호환되어 유닉스에서
가장 많이 사용하는 셀로 알려짐 명령행 편집기능 제공. (yum -y install ksh) 실행은 그냥 ksh치면
요놈 자동 완성이 탭이 아니라 set -o vi 변경해서 esc \ 해야한다 개귀찮 그냥 쓰자.

*zsh
기능이 엄청 많다고 한다. bash랑도 어느정도 호환이 되기도 하고 탭으로 자동완성도 된다!!!
보통 mac에서 많이 쓰며 커스터 마이징이나 여러모로 편하다. 기본 셀을 변경하려고 하면 chsh -s /bin/zsh
나중에 집에서 할때는 OH MY ZSH 사용하도록 하자 그냥 bash보다 몇십배는 편리할 같은 느낌이 든다.
일단 수업들을때는 bash 하고 실제로 사용할때는 zsh 익숙해 지기로 하자 결국 mac os 사용할 가능성이 크기에

 

2. 환경변수

무조건 대문자로 되어있다(실수로라도 사용자 정의변수로 덮어쓸 수 있으니). 기본으로 설정이 되어 있으며 env를 치면 나옴 HISTSIZE 같은것들 환경변수를 변경하고 저장하고 싶다면,

.bashrc 같은 곳에 export HISTSIZE=1500 같은식으로 적어두면 저장 가능

 

3. 사용자 정의변수 (일반변수)

enp0s8 랜카드를 보고 작업을 해야할때.
cat /etc/NetworkManager/system-connections/enp0s8.nmconnection 요걸 자주 쓰기 귀찮으니
nic8=”cat /etc/NetworkManager/system-connections/enp0s8.nmconnection” 이런식으로 변수 지정해주면
$nic8 만 쳐도 저 명령어가 그대로 쳐진다. 매크로 설정 같은거
매크로 없애려면 unset nic8 하면 사라진다. 짧은시간 자주 입력해야하는 긴 명령어는 이렇게 저장 해두면 좋을거 같다. 물론 이거 현재셀에서만 사용가능하다.

 

4. */etc/profile $HOME/.bash_profile

일반적으로 환경변수 등록해서 사용하는 파일

$HOME/.bashrc /etc/bashrc 일반적으로 alias 같은 명령어나 주로 일반변수 등록해서 사용하는 파일이다.
사용자 정의 변수(일반변수)를 export 명령의 인수로 사용하면 환경변수가 된다.
위에 nic8로 생각해보면 export nic8 라고 하면 이제 환경변수가 되어서 자식셀에서 쓸수 있는거. > env에 나옴
환경변수 : 현재 shell 에서 설정한 변수를 자식 shell 에서도 그대로 사용가능하다.
일반변수 : 현재 shell 에서 설정한 변수는 자식 shell 에서 사용할수 없다. > 환경변수로 만드는거 export
alias  :
현재 shell 에서 설정한 alias 자식 shell 에서는 사용할 없다.

 

**Shell 내장변수 - 알아두면 당연히 편해진다 그리고 스크립트 필수다 요정도만 알면 .
변수명이 직접 정의할 없는 특수문자나 숫자만으로 되어 있다.
$0 $1 .... $n => 위치매개변수
$# =>
인수의 개수
$* =>
모든 인수
$@ =>
모든 인수
$? => return value
어떤 리턴 값을 받냐? > c언어 보통 return 0; 이거 하는거 그거 값을 이야기
$$ =>
현재 process id

1: echo “$0” 명령어를 출력 $1 1번째 인수 10 $2 2번째 인수 20 출력한것
2: echo “$#”
인수의 개수를 출력한거 4개니까 4 출력 (10 , 20, “hello unix”, 30)
3: echo “$*”
모든 인수 출력 그래서 10 20 hello unix 30 나옴
4: echo “$@”
$* 같다고 생각하면 (물론 스크립트할때는 다른점을 알아야한다)
5: echo “$?”
return 값을 표현하는 건데 0 나오면 보통 제대로 됬다고 보면 . 실패 혹은 거짓이면 다른값을 준다. 따로 return 값은 안바꾸는게 좋을듯하다.
6: echo “$$”
현재 프로세스 id 가르쳐준다. (실행될때의 프로세스 id)
./var.sh
사용하면 >>>> bash(자식셀에서 실행이됨) 요놈의 프로세스 id 보여주는건데 ./var.sh 실행이 끝나면 bash 죽기 때문에 우리가 다시 확인 해볼 없는 것이다.

 

'Linux' 카테고리의 다른 글

압축 및 백업  (0) 2024.02.05
Centos 7 기준 root 암호 재설정  (0) 2024.02.05
RAID  (0) 2024.02.05
Partition, Filesystem, LVM  (0) 2024.02.05
Chown, Chmod, Permission, Umask  (0) 2024.02.05

+ Recent posts