쉘 스크립트에서 환경변수 적용하기

rodusik·2022년 10월 5일
0

shell script

목록 보기
2/3

Telegraf를 설치할 때 바이너리로 설치하고 환경변수가 적용되도록 하는 스크립트를 작성하는데 스크립트가 정상적으로 실행이 되어도 환경변수가 적용되지 않았다.

원인을 찾아보니 쉘 스크립트를 실행할 때는 자식프로세스를 생성하여 실행하기 때문에 스크립트 동작이 끝나면 자식프로세스가 죽고 부모프로세스(현재 쉘)에서 종료상태의 정보만 가져가기 때문에 환경변수가 적용되지 않는 것이었다.

환경변수를 적용하기 위해서 현재 쉘에서 실행될 수 있도록 해줘야 한다. (/etc/profile에 설정하는 방법도 있지만 실행 계정이 non-root계정이 아니기 때문에 이 방법은 사용하지 못한다.)

실행할 쉘스크립트의 이름이 test.sh이고 test.sh의 내용은 아래와 같다.

#!/bin/bash

...생략
export TELEGRAF_HOME="/home1/user/apps/telegraf" >> ~/.bashrc
export PATH='$TELEGRAF_HOME/usr/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
...생략

이 때 다음과 같이 스크립트를 실행한다.

$ . ./test.sh
또는
$ source ./test.sh

현재 쉘에서 실행되어 환경변수가 적용된다.


혹은 ~/.bash_profile에 환경변수를 넣고 로그인할 때 마다 실행되어 적용되도록 하는 방법도 있다. (현재 쉘에서 스크립트 종료 후 바로 환경변수를 사용해야 할 때는 안 되는 방법..)

0개의 댓글