Shell Environments(Week 3-1)

G·2022년 10월 3일
0

2-2 OpenSource

목록 보기
1/12
post-thumbnail

Linux Commands and Shell

Shell Programming을 알아보기 위해 기본적인 용어, 명령어, 그리고 쉘 변수에 대해 알아본다.

장점

  • Shell programming을 사용하지 않은 코드보다 더 간결해진다.
  • 반복되는 작업을 Shell Programming을 통해 효율적으로 처리할 수 있다.
  • 명령어나 변수의 조합을 통해 하나의 새로운 기능을 제공한다.

Terminology

kernal

커널이란 운영체제 프로그램을 뜻한다. 컴퓨터 부팅 시 디스크에 존재하는 kernal이 Memory에 load된다. 리눅스가 부팅이 되었을 때, 리눅스 Shell인 bash가 Memory에 load 된다.
Memory에 load된다는 말은 프로그램이 실행된다는 말이다.

utility

유틸리티란 프로그램을 뜻한다. 만약 C언어 소스코드가 작성돼 있는 파일을 컴파일 했을 시 a.out이라는 실행파일로 변해 Memory에 load된다. 리눅스 명령어도 utility이다. 즉, 소스코드 파일이 존재한다.

shell:

Shell은 리눅스 명령어와 같이 다른 utility를 실행시키기 위해 존재하는 utility이다.
리눅스는 Bash라는 utility를 사용한다.
Bash와 실행파일의 관계: $(Bash) ./a.out: 부모 프로세스인 Bash가 자식 프로스세인 a.out 실행파일을 실행시킨다. 자식 프로세스로 환경변수들이 상속된다.

$ bash --version// bash의 version을 출력한다.
$ cat /etc/shells// 사용가능한 bash의 경로를 출력한다.
$ echo $SHELL// 사용중인 Shell의 경로를 출력한다.

Shell Variables

Shell Variables: set

  • varname=value 형태로 선언한다.
  • 쉘 변수는 assigned 즉, 값이 할당되었을 때 생긴다.
  • 공백을 포함시키면 안 된다.
  • echo 명령어는 변수의 값을 확인할 때 주로 사용되는 명령어이다.
  • $는 변수의 값을 참조할 때 사용된다.
$ Vehicle=Bus//set
$ echo $Vehicle//print
Bus
$ set | grep Vehicle// Shell 변수 중 Vehicle 출력
Vehicle=Bus
$ unset Vehicle// unset variable

Environment variables

환경변수는 새로운 유틸리티를 실행시켜 자식 프로세스로 들어갔을 때도 사용 가능한 변수이다. export를 사용하여 환경변수를 만들어줄 수 있다.

  • export varname=value 형태로 선언한다.
  • env(or printenv) 환경변수의 변수명과 변수를 출력한다.
$ var1=10//local
$ export var1// 환경변수 변경
$ export var2=20// 환경변수 선언
$ export -n var1// 환경변수 해제
$ evn | grep var// env(환경변수출력)
var1=10
var2=20

다양한 gcc 버전이 있기 때문에, 환경변수에 경로를 저장해 상황에 맞는 컴파일을 할 수 있다.

Built-in environment variables

PATH

  • 명령어의 파일 경로를 배열형태로 가지고 있다.
  • :로 분리되어 저장한다.
  • PATH=$PATH":경로" 형태로 명령어 경로를 추가할 수 있다.
    세 번째의 경우는 새로운 명령어를 맨 뒤에 두는 이유는 기존의 built-in 명령어들보다 먼저 실행될 위험이 있기 때문이다.
    PATH 변수를 다른 변수로 바꿀 경우 명령어들을 사용하지 못 한다.
$ echo $PATH
/home/fos/bin:/home/fos/.local/bin:/usr/local/sbin:/usr/local/bin:/usr
/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
$ ls
text.txt
$ PATH=/dev/
$ ls
ls: command not found

HOME

  • HOME directory의 경로를 가지고 있는 변수이다.
  • 이를 자의적으로 변경할 수 있지만, 리눅스를 새로 시작할 경우 초기화된다.
  • ~/bashrc 파일을 수정해야 영구적으로 바뀐다.
$ echo $HOME
/home/fos
$ cd
$ pwd
/home/fos
$ HOME=/home/fos/oss
$ cd
$ pwd
/home/fos/oss
profile
열심히 안 사는 사람

0개의 댓글