본문 바로가기
[Linux]

[linux] [따배셸] Bash Shell의 변수

by SAMSUNG Metaverse-Cloud 2023. 1. 10.
728x90

 

 

 

Shell의 변수란?

데이터를 넣는 그릇이다.
선언할 필요 없이 사용이 가능하다.
변수명: 문자, 숫자, _로 구성할 수 있지만 시작은 반드시 문자나 _로 시작해야 한다.

 

변수 선언

vername=value 

ex : fname=yang

ex : score=100

 

먼저 변수를 하나 생성해 보았다.

 

 

 

두번째로 firstname이라고 하고 띄어쓴 후 변수를 선언하니 오류가 뜨는 것을 확인할 수 있었다. 

 

 

그리고 마지막으로 score라는 변수를 선언해 주었다. 

 

 

변수 확인

echo, set

ex : echo $fname

ex : set

 

다음은 변수를 확인하는 방법이다. echo 이후 $표시를 한 후 위에서 지정한 변수명을 입력 해 주었다. 
위에서 지정한 이름을 차례대로 입력하자 yang과 100이 제대로 나오는 것을 확인할 수 있었다.

 

 

set은 시스템에 있는 수많은 변수들을 모두 표시한다. 위 사진은 set을 입력한 후 엔터를 누른 것이다.
모든 변수를 다 보여주는 것이므로 grep을 사용해서 내가 원하는 변수를 찾을 수 있다. 

 

 

 

set 명령어를 입력한 후 띄어쓰고 |(파이프라인)을 입력한 후 띄어쓰고 grep 후 띄어쓰고 내가 찾으려는 이름을 입력한다. 
그럼 이런식으로 결과가 잘 도출되는 것을 확인할 수 있다. 

 

 

 

 

변수 제거

unset varname

ex : unset fname 

 

마지막으로 삭제이다.

먼저 화면에 lastname을 출력해보면 위에서 생성했던 yang을 확인할 수 있다.

삭제를 하기 위해서는 unset 후 변수명을 입력해주면 된다.

제거를 완료한 후 다시한번 lastname의 변수를 출력해 보지만 이미 삭제되었으므로 아무것도 나오지 않는다. 

 

 

 

Shell의 환경변수란?

시스템이 목적을 가지고 사용하는 변수를 환경 변수라고 한다.

즉 동작되는 프로그램에 영향을 주는 변수를 의미한다. 

 

 

 

환경 변수 선언

export varName=value

ex : export Name=yang

 

일반적으로 환경변수의 선언은 대문자로 많이 한다. 그러므로 환경변수를 선언해 준 후 출력까지 해 보았다.

 

그런데 이렇게 보면 일반 변수와 환경 변수의 뚜렷한 차이를 알기가 힘들다.  하지만 이 둘에는 분명한 차이가 있다.

위에서 선언했던 일반 변수는 앞으로 전달 될 명령어들에게 아무런 영향을 주지 않는다. 현재 시점에만 사용하는 것이다.

그러나 export로 선언한 변수는 이후 실행되는 애플리케이션에 그대로 전달된다. 그래서 내부적으로는 전혀 다르게 사용이 된다. 

 

 

 

시스템에 적용된 환경 변수 확인

env

ex: env

 

env는 enviroment의 줄임말로 환경변수를 출력하는 것이다. set이 모든 변수를 출력하는 것이었다면 env는 환경변수만을 출력한다. 

 

 

기억해야 할 환경변수

이제 자주 쓰는 환경변수에 대해서 알아보자

 

 

 

먼저 PATH이다. :(콜론)을 기준으로 폴더들을 나열한다. 

 

 

 

예를 들어 우리가 date라는 명령어를 사용한다고 해보자. 

이 명령어를 어느 디렉토리에 있는지 먼저 찾아야 한다. 없다면 command not found라는 메세지를 출력해야하며, 있다면 커널에게 실행을 요청한다.

그렇기에 가장 먼저 찾아야 한다. 그러므로 위의 콜론을 기준으로 내가 사용하는 명령어가 디렉토리에 있는지 찾는 작업을 진행한다. 

그러므로 PATH는 매우 중요한 환경변수이다. 이를 잘못 선언하지 않도록 해야한다. 

 

만약 잘못 덮어 쓴 후 명령을 실행하면 이렇게 date 명령어를 찾지 못하게 된다. 

 

 

그 다음은 HOME이다. 

우리가 cd를 누르면 Home 디렉토리로 간다. 우리가 HOME을 /tmp로 바꾼 후 cd를 누르면 우리가 변수로 선언해 주었던 /tmp로 이동하는 것을 확인할 수 있다. 

 

이렇듯 이러한 명령들이 전부 환경변수에 저장되어 있다고 생각하면 된다. 

 

 

출처:

https://www.youtube.com/watch?v=ezsCVBTiUKs&list=PLApuRlvrZKog2XlvGJQh9KY8ePCvUG7Je&index=3&ab_channel=TTABAE-LEARN 

 

 

 

 

728x90