Computer >> 컴퓨터 >  >> 시스템 >> Linux

Bash 변수 완벽 가이드: 개념부터 실전 활용법까지

Bash 변수 완벽 가이드: 개념부터 실전 활용법까지

Bash에서는 긴 문자열 전체를 하나의 변수에 담아 사용할 수 있습니다. 이를 활용하면 명령어 입력이 훨씬 간편해지고, 스크립트 작성도 한결 수월해집니다. 그렇다면 Bash 변수는 정확히 어떻게 동작하며, 어떤 방식으로 활용할 수 있을까요? 지금부터 하나씩 살펴보겠습니다.

변수(Variable)란 무엇인가?

변수는 다양한 영숫자 값을 담을 수 있는, 기억하기 쉬운 이름입니다. 변수가 유용한 이유는 동일한 함수나 코드를 값마다 일일이 다시 작성하지 않고도 여러 값에 재사용할 수 있기 때문입니다. 또한 개별 값을 매번 다루는 대신 하나의 이름으로 통일해서 관리할 수 있으므로, 코드 작성 자체도 훨씬 간단해집니다.

실시간 변수 만들기

Bash는 변수 사용을 기본적으로 지원합니다. 현재 Bash 세션 중이라면 언제든 즉석에서 변수를 만들고 재사용할 수 있으며, 다양한 방식으로 작업 효율을 높여줍니다. 단, 이런 변수는 세션이 종료되면 함께 사라진다는 점을 기억해야 합니다.

예를 들어 여러 사이트를 방문하며 자료 조사나 데이터 스크래핑을 한다고 가정해 보겠습니다. 이때 다음과 같이 변수를 생성할 수 있습니다.

sitea=https://www.maketecheasier.com
Bash 변수 완벽 가이드: 개념부터 실전 활용법까지

이후 Firefox로 해당 사이트에 접속하고 싶다면 아래처럼 입력하기만 하면 됩니다.

firefox $sitea
Bash 변수 완벽 가이드: 개념부터 실전 활용법까지

훨씬 간결하고 가독성도 좋습니다. $sitea 변수는 직접 내용을 변경하거나 Bash 세션이 종료될 때까지 해당 사이트 주소에 계속 매핑되어 있습니다. 물론 siteb, sitec, sited처럼 원하는 만큼 변수를 더 만들 수도 있습니다.

새 변수를 설정할 때는 이름과 저장할 문자열을 자유롭게 정할 수 있습니다. 다만 몇 가지 주의할 점이 있습니다. 첫째, 변수 이름은 기본적으로 대소문자를 구분합니다. 따라서 $sitea$SiteA는 서로 다른 변수로 취급됩니다. 둘째, 공백을 포함한 특수 문자가 들어간 문자열을 저장할 때는 반드시 따옴표로 감싸야 합니다.

스크립트에서 변수 활용하기

변수의 진가는 스크립트를 작성할 때 드러납니다. 변수를 사용하면 하나의 스크립트만 작성해도 서로 다른 문자열을 순회 처리하거나, 개별화된 데이터에 맞춰 동작하도록 만들 수 있습니다. 예를 들어 누구나 자신의 컴퓨터에서 실행할 수 있으면서도, 실행할 때마다 사용자 이름이 담긴 맞춤형 인사를 출력하는 스크립트를 만든다고 생각해 보세요. 변수가 없다면 사용자마다 스크립트를 새로 작성해야 하지만, 변수를 사용하면 스크립트는 그대로 두고 이름만 바꾸면 됩니다.

그런 스크립트는 대략 다음과 같은 형태입니다.

#!/bin/bash
username=Odysseas
echo $username
Bash 변수 완벽 가이드: 개념부터 실전 활용법까지

위 예제만 보면 다소 불필요해 보일 수 있습니다. 하지만 코드가 복잡해질수록 변수는 필수 요소가 됩니다. 스크립트가 수백, 수천 줄에 달하고 사용자 이름이 여러 곳에 등장한다면 더욱 그렇습니다. 이해를 돕기 위해 조금 다른 버전의 스크립트를 살펴보겠습니다.

#!/bin/bash username=Linus
echo Hello $username. This is a simple script I wrote that will repeat your name - that is, $username - often as an actual example of how to use Bash variables. I hope it will make it easier to understand how to use variables to improve your Bash workflow, $username. In this case, the variable username is mapped to your name. Whenever Bash runs into it, it replaces it with $username.
Bash 변수 완벽 가이드: 개념부터 실전 활용법까지

위 스크립트는 username 변수에 정의된 이름을 사용해 문장을 완성합니다. 실제 사용자 이름을 직접 넣는다면 같은 이름을 네 번이나 타이핑해야 하고, 다음 사용자를 위해서도 또 네 번, 그다음 사용자에게도 계속 반복해야 합니다. 반면 변수에 할당해 두면 사용자마다 한 번만 바꾸면 되고, 본문에 등장하는 모든 이름이 자동으로 함께 업데이트됩니다.

영구적인 Bash 변수와 앨리어스(Alias)

지금까지 임시 변수를 설정하는 방법과, 좀 더 오래 유지하고 싶을 때 자신의 스크립트 안에 포함시키는 방법을 살펴봤습니다. 그렇다면 Bash 자체에 변수를 영구적으로 설정하는 것도 가능할까요? 답은 "물론입니다!"이며, 단 하나의 파일만 수정하면 됩니다. 바로 "~/.bashrc"입니다.

선호하는 텍스트 편집기로 "~/.bashrc" 파일을 열어 보세요. 저는 nano를 선호하기 때문에 다음과 같이 열었습니다.

nano ~/.bashrc
Bash 변수 완벽 가이드: 개념부터 실전 활용법까지

처음에는 테스트 삼아 변수 하나만 추가하는 것을 권장합니다. 그래야 과정이 제대로 작동하지 않을 때 어디를 확인해야 할지 알 수 있습니다. 파일 맨 끝으로 이동한 뒤 새 줄에 변수를 추가합니다. 예를 들어 저는 제 이름을 담는 변수를 다음과 같이 설정했습니다.

myname="Odysseas Kourafalos"
Bash 변수 완벽 가이드: 개념부터 실전 활용법까지

파일을 저장하고 편집기를 종료하세요. 변경 사항은 즉시 적용되지 않습니다. 터미널에 다음 명령을 입력해야 적용됩니다.

source ~/.bashrc

이제 새로 설정한 변수를 Bash 세션에서 바로 사용할 수 있습니다.

echo $myname

원하는 만큼 변수를 추가하면 매일의 Bash 작업을 크게 단순화할 수 있습니다.

생산성을 한층 더 끌어올리고 싶다면 또 다른 종류의 변수인 '앨리어스(alias)'를 설정해 보는 것도 좋습니다. 일반 변수가 명령어에서 사용할 데이터에 매핑되는 것과 달리, 앨리어스는 실제 명령어 자체를 대체합니다.

긴 문자열을 기억하기 쉬운 변수에 담을 수 있듯이, 복잡한 명령어도 앨리어스로 간편하게 대체할 수 있습니다. 관련 내용은 이전 글에서 확인할 수 있는데, 길고 복잡한 7zip 압축 명령어 전체를 두 글자짜리 앨리어스로 바꾸는 방법을 소개한 바 있습니다.

마지막으로 한 가지 덧붙이자면, .bashrc에 변수를 영구적으로 설정했더라도 앞서 살펴본 방식대로 세션 안에서 일시적으로 다른 값을 재할당할 수 있습니다. 이 경우 변수는 로그아웃이나 재부팅으로 현재 Bash 세션이 끝나거나, .bashrc 파일을 다시 source할 때까지 새로운 값을 유지합니다.