Linux 명령줄에서 Bash 쉘 스크립트를 실행하는 방법


Bash 쉘 스크립트를 실행하는 것은 매우 간단합니다. 하지만 이 튜토리얼에서는 서브셸 대신 셸에서 실행하는 방법도 배우게 됩니다.

"5시간 동안 자동화할 수 있는 일을 손으로 하는 데 5분을 허비하지 마십시오."

자동화가 수동으로 수행하는 것보다 시간이 더 오래 걸릴 수 있지만 고급 Linux 사용자에게는 자동화가 필요하다는 의미로 비꼬는 말일 수도 있습니다. 쉘 스크립트는 Linux 자동화의 기반을 형성합니다.

Bash 쉘 스크립트를 실행하는 가장 간단한 방법은 다음과 같습니다.

bash path_to_script

그러나 더 널리 사용되는 방법은 스크립트에 실행 권한을 부여한 후 다음과 같이 스크립트를 실행하는 것입니다.

chmod u+x script.sh
./script.sh

이에 대해 단계별로 자세히 설명하겠습니다.

Ubuntu에서 쉘 스크립트 실행

먼저 간단한 bash 스크립트를 만들어 보겠습니다. 사용 가능한 디스크 공간과 RAM을 보여주는 유용한 bash 스크립트를 만들겠습니다.

#!/bin/bash

# Script that shows the available disk space and memory

# Disk space
echo -e "FREE DISK SPACE"
df -h /dev/sda

# Memory (RAM)
echo -e "\nFREE MEMORY"
free -h

# Process ID or PID
echo -e "\nPID = $$"

이 스크립트는 사용 가능한 디스크 공간(/dev/sda), 메모리 및 셸의 프로세스 ID를 인쇄합니다. 저는 "freespace.sh"로 저장하고 있습니다.

이 스크립트를 실행하려면 chmod 명령을 사용하여 실행 권한을 허용해야 합니다. 구문은 다음과 같습니다.

chmod +x shell_script.sh
📋
스크립트가 있는 디렉터리 내부에 있지 않은 경우 스크립트 파일의 절대 경로를 입력했는지 확인하세요.

여기서는 시스템의 모든 사용자에게 이 스크립트를 실행할 수 있는 실행 권한을 부여했습니다. 이것이 +x 태그가 의미하는 바입니다. ls -l 명령은 권한을 포함하여 파일의 속성을 나열합니다.

자신에게만 실행 권한을 부여하는 u+x를 사용할 수도 있습니다.

마지막으로 다음 구문으로 스크립트를 실행합니다.

./shell_script.sh

그렇습니다. 이는 쉘 스크립트를 실행하는 간단한 방법입니다. 이는 인터프리터를 호출하지 않고 실행해야 하는 모든 스크립트에 적용됩니다!

여기에서 Linux의 파일 권한에 대해 자세히 알아볼 수 있습니다.

또는 통역사를 사용하십시오.

모든 스크립팅 언어에는 스크립트 파일의 각 줄을 하나씩 직접 실행하는 인터프리터가 있습니다. 스크립트 파일에 오류가 있으면 해당 특정 줄에서 실행이 중지됩니다(이전 줄을 실행한 후).

인터프리터로 스크립트를 실행하기 위해 파일의 권한을 변경할 필요가 없습니다.

셸 스크립트의 경우 사용 중인 셸을 호출할 수 있습니다. 저는 bash를 사용하고 있고 bash 스크립트를 작성했으므로 sh 또는 bash를 호출하겠습니다.

스크립트를 실행하려면 인터프리터를 사용하여 호출할 수 있습니다.

bash ./shell_script.sh

또는

sh ./shell_script.sh

여기에 상대 경로나 절대 경로를 입력할 수 있습니다.

소스 명령을 사용하여 현재 쉘에서 스크립트 실행

기본적으로 쉘 스크립트는 서브쉘에서 실행됩니다. 때로는 동일한 셸 자체에서 스크립트를 실행하고 싶을 수도 있습니다. 이것이 바로 source 명령이 들어오는 곳입니다.

이 명령을 사용하면 동일한 셸에 무언가를 포함할 수 있습니다. 이는 주로 쉘을 종료하지 않고 bashrc와 같은 파일에 대한 변경 사항을 업데이트하는 데 사용됩니다.

다음과 같이 스크립트를 실행할 수도 있습니다.

source ./shell_script.sh

$$ 변수를 사용하여 현재 사용 중인 셸의 프로세스 ID를 찾을 수 있습니다. 이것이 위에 표시된 예제 스크립트에서 수행되는 작업입니다.

스크립트와 상위 셸의 프로세스 ID(PID)가 동일합니다. 이는 스크립트가 새 하위 셸이 아닌 동일한 셸에서 실행되었음을 의미합니다.

도트 연산자(.)

하위 쉘 대신 동일한 쉘에서 스크립트를 실행하는 또 다른 방법

점(.)은 사용 중인 셸을 나타내며 그 뒤에 실행하려는 스크립트가 옵니다.

. ./shell_script.sh

보너스 팁: 실행하는 동안 스크립트를 디버그하세요.

인터프리터 방법을 사용하면 어떤 명령이 실행되는지 확인하고, 스크립트의 오류를 디버그하고, 실행에 적중이 걸리는 부분을 찾을 수 있습니다.

이를 위해 상세 모드(-v) 또는 xtrace 모드(-x)를 사용하여 실행 중인 명령문을 확인할 수 있습니다.

상세 모드는 개별 명령 실행 사이의 전체 스크립트를 표시합니다. 아래 이미지를 참고하시면 보실 수 있습니다.

Xtrace 모드는 스크립트에서 각 명령의 실행을 추적하는 데 사용됩니다. 여기서 + 기호는 명령을 실행하기 전의 명령을 나타냅니다(++는 "실행" 명령을 나타내는 데 사용됨).

마무리

bash 스크립트 실행에 대한 기본적이면서도 필수적인 튜토리얼이 마음에 드셨기를 바랍니다.

Bash 스크립팅을 처음 접하는 분들을 위해 10장으로 구성된 Bash 초보자 시리즈가 있습니다.

질문이나 제안 사항이 있으면 알려주십시오.