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 초보자 시리즈가 있습니다.
질문이나 제안 사항이 있으면 알려주십시오.