ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • bash, Environment Variable
    2012. 8. 18. comments
    반응형

    Bash(Bourne-again shell)란, GNU 프로젝트를 위해 만들어진 유닉스 쉘로써, GNU 운영체제와 리눅스, 맥 OSX 등 다양하게 사용되고 있다. Bash 명령어의 문법은 대부분 sh와 호환되어 있고, 스크립트로 작성해서 사용할 수 있다. 대부분 C언어를 알고 있으면 쉽게 사용할 수 있도록 설계 되었다. 이번에 이야기할 내용은 bash의 환경변수이다.

    Enviroment variables(환경변수)란

    대부분의 bash 그리고 다른 shell에서는 전역적인 변수를 설정 할 수 있다. 내부적으로 ASCII string으로 저장되며, 쉘뿐만아니라 작성된 프로그램에서도 시스템에서 지원하는 함수를 통해서 접근할 수 있다. 이렇게 설정되는 시스템 환경변수들은 시스템과 프로그램들이 전역적으로 사용할 변수사항들을 저장해놓고 사용하게 된다.

    • Lang
    • Path
    • SSH
    • User
    • Program Setting
    • ...

     

    다음은, 시스템에서 지원하는 API 함수이다.

    NAME

         getenv, putenv, setenv, unsetenv -- environment variable functions

     

    LIBRARY

         Standard C Library (libc, -lc)

     

    SYNOPSIS

         #include <stdlib.h>

     

         char * getenv(const char *name);

         int putenv(char *string);

         int setenv(const char *name, const char *value, int overwrite);

         int unsetenv(const char *name);

     

    example) PATH와 LANG의 환경변수의 값을 읽어들여서 출력.

    #include <stdio.h> 
    #include <stdlib.h>  
    
    int main(int argc, char* argv[]) {
    	char* path = NULL;
    	char* lang = NULL;
    	path = getenv("PATH");
        lang = getenv("LANG");
        printf("environment variable PATH=%s\n", path);
        printf("environment variable LANG=%s\n", lang); 
        return 0; 
    }

     

    환경변수 뿐만 아니라, 쉘에서는 일반변수도 만들어서 사용할 수 있다.

    $ var1='var1 is vraible'
    $ echo $var1
    var1 is vraible
     
    변수에 접근하는 방법은 변수명에 $를 붙여주면 된다. 주의사항으로 'key=value'에서 '=' 앞뒤에 빈 공백이나 탭을 사용하게 되면 원치 않은 값(공백 또는 탭)이 들어가거나 문법오류가 발생한다.
    $ echo $var1
    var1 is vraible
     
    이렇게 만든 변수를 export 명령어를 사용하여 환경변수로 만들면 된다.
    export EDITOR=vi
     
    printenv 명령어로 환경변수 리스트를 조회할 수 있다.
    $ printenv | grep EDITOR
    EDITOR=vi

    설정된 환경변수를 삭제하고 싶을 때는 unset을 사용한다.

    $ unset EDITOR

     

    EDITOR 환경변수를 export 명령어로 설정해주었다고 할 때 새로운 터미널을 열어서 printenv 명령어로 환경변수 리스트를 조회해보면 EDITOR가 없다. 이유는 명령을 내린 터미널에서만 유효하기 때문에 환경변수를 계속 유지하려면 추가적인 작업을 해야한다.

     

    프로그램 환경변수 설정

    프로그램에서 환경변수를 설정하는 경우는, /etc/profile.d/ 디렉토리에 추가하면 되고 파일을 추가하고 파일안에 export KEY=VALUE를 넣으면 된다. 이렇게 추가된 환경변수는 모든 계정에서 사용 가능하게 된다.

     

    사용자 계정 환경변수 설정

    프로그램에서 필요한 정보가 아닐 경우는 일반적으로 사용자 계정 환경변수에 넣는다.

    $HOME/.bash_profile에 설정 내용을 넣어주면 된다.. bash_profile은 로그인할 때마다 실행해주는 스크립트이다.

     

    ~/.bash_profile 

    # ~/.bash_profile: executed by bash(1) for login shells.

    # see /usr/share/doc/bash/examples/startup-files for examples.

    # the files are located in the bash-doc package.

     

    export EDITOR=vi

    보통, desktop환경에서는 재 로그인하는 경우가 많지 않기 때문에 bashrc에 bash_profile이 실행되도록 해주면 유용하다. bashrc는 bash가 실행될 때 마다(터미널이 실행될 때 마다) 파일안의 내용이 실행된다.

    if [ -f "~/.bash_profile" ]; then

        . ~/.bash_profile

    fi

    반응형

    댓글

Designed by Tistory.