본문 바로가기

리눅스

쉘 스크립트에서 환경 변수를 설정하는 여러 가지 방법

728x90

쉘 스크립트에서 환경 변수를 설정하는 여러 가지 방법

1 환경 변수 등록

환경 변수를 직접 등록하는 방법입니다. 스크립트에서 직접 환경 변수를 설정합니다. 이렇게 하면 스크립트가 실행될 때 해당 환경 변수가 설정되어 있습니다.

 

  • 스크립트 편집
vim myscript.sh
#!/bin/bash

# 직접 환경 변수 등록
export MY_VARIABLE="some_value"

# 환경 변수 사용
echo "환경 변수 값: $MY_VARIABLE"
  • 스크립트 실행
./myscript.sh
$ ./myscript.sh 
환경 변수 값: some_value

2 .env 파일

.env 파일을 사용하여 환경 변수를 설정하는 방법입니다. 이 파일에 환경 변수를 등록하고, 스크립트에서 해당 파일을 읽어 환경 변수를 설정합니다. 이 스크립트를 실행할 때 .env 파일에 등록된 환경 변수를 사용할 수 있습니다.

 

  • 스크립트 편집
vim myscript.sh
#!/bin/bash

# .env 파일 로드
if [ -f .env ]; then
  source .env
  echo "환경 변수가 로드되었습니다."
else
  echo ".env 파일을 찾을 수 없습니다."
  exit 1
fi

# 환경 변수 사용
echo "환경 변수 값: $MY_VARIABLE"
  • .env 편집
vim .env
MY_VARIABLE=some_value
  • 스크립트 실행
./myscript.sh
$ ./myscript.sh
환경 변수가 로드되었습니다.
환경 변수 값: some_value

3 명령행 인자(arguments)

명령행 인자를 사용하여 스크립트 실행 시에 환경 변수 값을 전달하는 방법입니다.

 

  • 스크립트 편집
vim myscript.sh
#!/bin/bash

# 명령행 인자에서 환경 변수 값 가져오기
MY_VARIABLE=$1

# 환경 변수 사용
echo "환경 변수 값: $MY_VARIABLE"
  • 스크립트 실행

이 스크립트를 실행할 때 인자를 전달하여 환경 변수 값을 설정할 수 있습니다.

./myscript.sh some_value
$ ./myscript2.sh some_value
환경 변수 값: some_value

위의 예제에서는 some_value가 $1에 전달되어 환경 변수로 사용됩니다.

 

이러한 방법들 중 어떤 것을 선택할지는 사용 사례와 보안 요구 사항에 따라 다를 수 있습니다. 명령행 인자는 외부에서 직접 제공되며, .env 파일은 설정 파일을 사용하는 것으로, 각각의 장단점이 있습니다.

728x90
  • myscript.sh 스크립트 파일 편집
vim myscript.sh
#!/bin/bash

# 환경 변수 파일 로드
if [ -f .env ]; then
  source .env
  echo "환경 변수가 로드되었습니다."
else
  echo "환경 변수 파일을 찾을 수 없습니다."
  MY_SECRET_USERNAME=${1:-shelluser123}
  MY_SECRET_PASSWORD=${2:-shellpassword123}
  #exit 1
fi

# 가져온 정보 사용
echo "사용자 이름: $MY_SECRET_USERNAME"
echo "비밀번호: $MY_SECRET_PASSWORD"
  • 스크립트 권한 부여
chmod +x myscript.sh
  • 직접 환경 변수를 사용하여 변수 값을 전달하는 방법
$ ./myscript.sh
환경 변수 파일을 찾을 수 없습니다.
사용자 이름: shelluser123
비밀번호: shellpassword123
  • .env(환경 설정) 파일를 사용하여 변수 값을 전달하는 방법
$ ./myscript.sh
환경 변수가 로드되었습니다.
사용자 이름: envfileuser123
비밀번호: envfilepasswd123
  • 명령행 인자를 사용하여 변수 값을 전달하는 방법
$ ./myscript.sh commanduser123 commandpassword123
환경 변수 파일을 찾을 수 없습니다.
사용자 이름: commanduser123
비밀번호: commandpassword123

 

728x90