리눅스 스크립트 실행

LinuxBeginner
지금 연습하기

소개

이 랩에서는 현재 셸에서 스크립트를 실행하는 강력한 도구인 Linux 의 source 명령어를 이해하고 사용하는 데 중점을 둡니다. 별도의 하위 프로세스에서 실행되는 일반적인 스크립트 실행과 달리, source 명령어는 현재 셸 환경에서 파일의 명령어를 실행합니다. 이를 통해 스크립트에서 정의된 변수와 함수가 현재 세션에 유지될 수 있습니다.

이 랩을 통해 다음을 배우게 됩니다.

  • source 명령어를 사용하여 스크립트를 생성하고 실행하는 방법
  • source를 사용할 때 스크립트에 매개변수를 전달하는 방법
  • source 명령어와 일반적인 스크립트 실행의 차이점
  • source 명령어를 사용하여 환경 변수를 설정하는 방법

이 랩이 끝나면 효율적인 Linux 셸 스크립팅 및 환경 관리를 위해 source 명령어를 편안하게 사용할 수 있게 될 것입니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 91%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

기본 스크립트 생성 및 소싱

이 단계에서는 간단한 스크립트 파일을 생성하고 source 명령어를 사용하여 현재 셸 환경에서 실행합니다. 이를 통해 source가 일반적인 스크립트 실행과 어떻게 다른지 이해할 수 있습니다.

일반적으로 스크립트를 실행할 때 ( ./script.sh 사용), 셸은 스크립트를 실행하기 위해 새로운 하위 프로세스를 생성합니다. 해당 스크립트에서 정의된 모든 변수 또는 함수는 해당 하위 프로세스 내에서만 존재하며 스크립트가 종료되면 사라집니다. 그러나 source 명령어 (또는 축약형 .) 를 사용하면 스크립트의 명령어가 현재 셸 환경에서 실행되어 스크립트가 완료된 후에도 변수와 함수가 유지될 수 있습니다.

이 개념을 설명하기 위해 기본 스크립트를 만들어 보겠습니다.

1. 프로젝트 디렉토리로 이동

먼저, 올바른 디렉토리에 있는지 확인합니다.

cd ~/project

2. 간단한 스크립트 파일 생성

nano 편집기를 사용하여 variables.sh라는 새 파일을 생성합니다.

nano variables.sh

다음 내용을 파일에 추가합니다.

#!/bin/bash
## This script sets an environment variable
export WEATHER="Sunny"
echo "The weather is now set to: $WEATHER"

Ctrl+O를 눌러 파일을 저장한 다음, Enter를 눌러 파일 이름을 확인하고 마지막으로 Ctrl+X를 눌러 nano 를 종료합니다.

3. 스크립트 실행 가능하게 만들기

스크립트를 실행하기 전에 실행 가능하게 만들어야 합니다.

chmod +x variables.sh

4. 스크립트를 일반적인 방식으로 실행

먼저, 전통적인 방식으로 스크립트를 실행해 보겠습니다.

./variables.sh

다음과 유사한 출력을 볼 수 있습니다.

The weather is now set to: Sunny

이제 현재 셸에 WEATHER 변수가 있는지 확인합니다.

echo $WEATHER

아무것도 출력되지 않거나 빈 줄이 표시될 것입니다. 이는 변수가 스크립트를 실행한 하위 프로세스에서만 설정되었고 현재 셸에서는 설정되지 않았기 때문입니다.

5. 스크립트 소싱

이제 source 명령어를 사용하여 스크립트를 실행해 보겠습니다.

source variables.sh

동일한 출력을 볼 수 있습니다.

The weather is now set to: Sunny

WEATHER 변수를 다시 확인합니다.

echo $WEATHER

이번에는 다음을 볼 수 있습니다.

Sunny

source 명령어를 사용하여 스크립트를 실행했기 때문에 WEATHER 변수가 이제 현재 셸에 존재합니다.

6. 축약 표기법 사용

source 명령어에 대한 점 (.) 축약 표기법을 사용할 수도 있습니다.

. variables.sh

이는 source variables.sh를 사용하는 것과 동일한 결과를 생성합니다.

매개변수와 함께 Source 사용

이 단계에서는 source 명령어를 사용할 때 스크립트에 매개변수를 전달하는 방법을 배우겠습니다. 이는 스크립트를 더 유연하고 재사용 가능하게 만들어야 할 때 유용합니다.

일반적인 스크립트 실행과 마찬가지로, source 명령어를 사용할 때 스크립트에 인수를 전달할 수 있습니다. 스크립트 내부에서 이러한 인수는 스크립트를 직접 실행할 때와 마찬가지로 표준 위치 매개변수 ($1, $2 등) 를 통해 액세스할 수 있습니다.

1. 매개변수를 허용하는 스크립트 생성

~/project 디렉토리에 greeting.sh라는 새 파일을 생성합니다.

cd ~/project
nano greeting.sh

다음 내용을 파일에 추가합니다.

#!/bin/bash
## This script accepts a name parameter and sets a greeting variable

## Check if a parameter was provided
if [ -z "$1" ]; then
  NAME="Guest"
else
  NAME="$1"
fi

## Set the greeting environment variable
export GREETING="Hello, $NAME!"
echo "$GREETING"

Ctrl+O, Enter, 그리고 Ctrl+X를 눌러 nano 를 저장하고 종료합니다.

2. 스크립트 실행 가능하게 만들기

chmod +x greeting.sh

3. 매개변수와 함께 스크립트 소싱

스크립트를 소싱하고 이름 매개변수를 전달해 보겠습니다.

source greeting.sh "Alice"

다음 출력을 볼 수 있습니다.

Hello, Alice!

이제 현재 셸에서 GREETING 변수가 설정되었는지 확인합니다.

echo $GREETING

다음 출력을 볼 수 있습니다.

Hello, Alice!

4. 다른 매개변수로 소싱

다른 이름으로 스크립트를 다시 소싱해 봅니다.

source greeting.sh "Bob"

출력:

Hello, Bob!

GREETING 변수를 다시 확인합니다.

echo $GREETING

출력:

Hello, Bob!

GREETING 변수가 새 값으로 업데이트되었음을 확인합니다.

5. 매개변수 없이 소싱

매개변수 없이 스크립트를 소싱할 수도 있습니다.

source greeting.sh

출력:

Hello, Guest!

매개변수가 제공되지 않으면 스크립트는 기본값 ("Guest") 을 사용합니다.

GREETING 변수를 다시 한 번 확인합니다.

echo $GREETING

출력:

Hello, Guest!

이는 다양한 입력 매개변수를 처리하여 스크립트를 적응 가능하게 만드는 방법을 보여줍니다.

개발 환경 스크립트 생성

이 단계에서는 더 실용적인 예제를 만들 것입니다: 여러 변수를 사용하여 개발 환경을 설정하는 스크립트입니다. 이는 실제 시나리오에서 source 명령의 일반적인 사용 사례입니다.

1. 개발 환경 스크립트 생성

~/project 디렉토리에 dev_env.sh라는 새 파일을 생성합니다.

cd ~/project
nano dev_env.sh

다음 내용을 파일에 추가합니다.

#!/bin/bash
## Development environment setup script

## Database connection settings
export DB_HOST="localhost"
export DB_PORT="5432"
export DB_USER="dev_user"
export DB_PASSWORD="dev_password"
export DB_NAME="dev_database"

## API settings
export API_URL="http://localhost:3000/api"
export API_KEY="dev_api_key_123"

## Application paths
export APP_ROOT="/home/labex/project/app"
export LOG_DIR="/home/labex/project/logs"

## Create directories if they don't exist
mkdir -p $APP_ROOT
mkdir -p $LOG_DIR

## Display confirmation message
echo "Development environment configured with the following settings:"
echo "-----------------------------------------------------------"
echo "Database: $DB_USER@$DB_HOST:$DB_PORT/$DB_NAME"
echo "API URL: $API_URL"
echo "App Root: $APP_ROOT"
echo "Log Directory: $LOG_DIR"
echo "-----------------------------------------------------------"
echo "Environment is ready for development!"

Ctrl+O, Enter, 그리고 Ctrl+X를 눌러 nano 를 저장하고 종료합니다.

2. 스크립트 실행 가능하게 만들기

chmod +x dev_env.sh

3. 개발 환경 스크립트 소싱

이제 스크립트를 소싱하여 개발 환경을 설정해 보겠습니다.

source dev_env.sh

다음과 유사한 출력을 볼 수 있습니다.

Development environment configured with the following settings:
-----------------------------------------------------------
Database: dev_user@localhost:5432/dev_database
API URL: http://localhost:3000/api
App Root: /home/labex/project/app
Log Directory: /home/labex/project/logs
-----------------------------------------------------------
Environment is ready for development!

4. 환경 변수가 설정되었는지 확인

스크립트에서 설정된 일부 환경 변수를 확인해 보겠습니다.

echo "Database connection string: $DB_USER:$DB_PASSWORD@$DB_HOST:$DB_PORT/$DB_NAME"

출력:

Database connection string: dev_user:dev_password@localhost:5432/dev_database

API 설정을 확인합니다.

echo "API settings: $API_URL with key $API_KEY"

출력:

API settings: http://localhost:3000/api with key dev_api_key_123

5. 디렉토리가 생성되었는지 확인

스크립트에 지정된 디렉토리가 생성되었는지 확인합니다.

ls -la ~/project/app ~/project/logs

두 디렉토리가 모두 존재함을 보여주는 출력을 볼 수 있습니다.

이 예제는 source 명령을 사용하여 여러 환경 변수 및 구성을 갖춘 완전한 개발 환경을 설정하는 방법을 보여줍니다. 이 접근 방식은 다양한 환경 (개발, 테스트, 프로덕션 등) 간에 전환하기 위해 개발 워크플로우에서 일반적으로 사용됩니다.

요약

이 랩에서는 Linux 에서 source 명령을 사용하여 현재 셸 환경에서 스크립트를 실행하는 방법을 배웠습니다. 다음은 수행한 작업에 대한 요약입니다.

  1. 기본 스크립트 생성 및 소싱: source를 사용하는 방법이 일반적인 스크립트 실행과 어떻게 다른지 배웠습니다. source는 스크립트에서 정의된 변수와 함수가 현재 셸 세션에서 유지되도록 합니다.

  2. 소싱된 스크립트에 매개변수 전달: source 명령을 사용할 때 스크립트에 매개변수를 전달하여 스크립트를 더 유연하게 만드는 방법과 스크립트 내에서 해당 매개변수를 처리하는 방법을 살펴보았습니다.

  3. 개발 환경 설정: 여러 환경 변수 및 구성을 사용하여 개발 환경을 설정하는 실용적인 스크립트를 만들었습니다. 이는 source 명령의 일반적인 실제 사용 사례입니다.

source 명령은 Linux 스크립팅에서 다음과 같은 작업을 수행할 수 있는 강력한 도구입니다.

  • 셸 세션 전체에서 유지되는 환경 변수 설정
  • 세션에서 나중에 사용할 수 있는 함수 정의
  • 재사용 가능한 모듈식 구성 생성
  • 복잡한 환경을 빠르고 일관되게 설정

이러한 기술은 Linux 시스템을 사용하는 모든 사람, 특히 개발자, 시스템 관리자 및 DevOps 엔지니어에게 필수적입니다. source 명령을 마스터함으로써 Linux 환경을 관리하기 위한 보다 효율적이고 체계적인 스크립트를 만들 수 있습니다.