Computer >> 컴퓨터 >  >> 프로그램 작성 >> BASH 프로그래밍

Bash로 설정 파일 파싱하기

프로그램 구성을 코드와 별도로 유지하는 것이 중요합니다. 프로그래머가 아닌 사람도 프로그램 코드를 수정하지 않고도 구성을 변경할 수 있습니다. 컴파일된 바이너리 실행 파일을 사용하면 소스 파일(오픈 소스 프로그램의 경우 보유하고 있음)에 액세스할 수 있을 뿐만 아니라 프로그래머의 기술도 필요하기 때문에 프로그래머가 아닌 경우에는 불가능합니다. 그것을 갖고 있는 사람은 거의 없으며 대부분의 사람들은 배우고 싶어하지 않습니다.

Bash와 같은 셸 언어를 사용하면 셸 스크립트가 바이너리 형식으로 컴파일되지 않기 때문에 정의에 따라 소스 코드 액세스가 가능합니다. 이러한 개방성에도 불구하고 프로그래머가 아닌 사람들이 셸 스크립트에 뿌리를 두고 이를 변경하는 것은 특히 좋은 생각이 아닙니다. 지식이 풍부한 개발자와 시스템 관리자라도 실수로 변경하여 오류를 일으키거나 더 악화시킬 수 있습니다.

따라서 구성 항목을 쉽게 유지 관리되는 텍스트 파일에 배치하면 분리가 가능하며 프로그래머가 아닌 경우 코드를 의도하지 않게 변경할 위험 없이 구성 요소를 편집할 수 있습니다. 많은 개발자는 컴파일된 언어로 작성된 프로그램에 대해 이 작업을 수행합니다. 사용자가 개발자가 될 것이라고 기대하지 않기 때문입니다. 같은 이유로 해석된 쉘 언어로 이 작업을 수행하는 것도 의미가 있습니다.

일반적인 방법

다른 많은 언어와 마찬가지로 ASCII 텍스트 구성 파일을 읽고 구문 분석하고 변수 이름을 읽고 프로그램 코드가 실행될 때 값을 설정하는 Bash 프로그램용 코드를 작성할 수 있습니다. 예를 들어 구성 파일은 다음과 같습니다.

var1=LinuxGeek46
var2=Opensource.com

프로그램은 해당 파일을 읽고 각 줄을 구문 분석하고 값을 각 변수에 설정합니다.

소싱

Bash는 소싱이라는 변수를 구문 분석하고 설정하는 훨씬 쉬운 방법을 사용합니다. . 실행 가능한 셸 프로그램에서 외부 파일을 소싱하는 것은 해당 파일의 내용을 전체 셸 프로그램에 포함하는 간단한 방법입니다. 어떤 의미에서 이것은 컴파일된 언어 include와 매우 유사합니다. 런타임에 라이브러리 파일을 포함하는 명령문. 이러한 파일에는 변수 할당을 포함하여 모든 유형의 Bash 코드가 포함될 수 있습니다.

늘 그렇듯이 설명하는 것보다 보여주는 것이 더 쉽습니다.

먼저 ~/bin을 만듭니다. 디렉토리(아직 존재하지 않는 경우)를 만들고 현재 작업 디렉토리(PWD)로 만듭니다. Linux 파일 시스템 계층 표준은 ~/bin을 정의합니다. 사용자가 실행 파일을 저장할 수 있는 적절한 장소입니다.

이 디렉터리에 새 파일을 만듭니다. 이름을 main으로 지정 실행 가능하게 만드십시오:

[dboth@david bin]$ touch main
[dboth@david bin]$ chmod +x main
[dboth@david bin]$

이 실행 파일에 다음 내용을 추가하십시오.

#!/bin/bash
Name="LinuxGeek"
echo $Name

그리고 이 Bash 프로그램을 실행하십시오:

[dboth@david bin]$ ./main
LinuxGeek
[dboth@david bin]$

새 파일을 만들고 ~/bin/data라고 부릅니다. . 이 파일은 실행할 필요가 없습니다. 다음 정보를 추가하십시오.

# Sourced code and variables
echo "This is the sourced code from the data file."
FirstName="David"
LastName="Both"

main에 세 줄 추가 다음과 같이 보이도록 프로그램:

#!/bin/bash
Name="LinuxGeek"
echo $Name
source ~/bin/data
echo "First name: $FirstName"
echo "LastName: $LastName"

프로그램 다시 실행:

[dboth@david bin]$ ./main
LinuxGeek
This is the sourced code from the data file.
First name: David
LastName: Both
[dboth@david bin]$

소싱에 대해 알아야 할 정말 멋진 것이 하나 더 있습니다. 단일 점(. ) source의 바로가기 명령. main 변경 .를 대체할 파일 source 대신 :

#!/bin/bash
Name="LinuxGeek"
echo $Name
. ~/bin/data
echo "First name: $FirstName"
echo "LastName: $LastName"

그리고 프로그램을 다시 실행합니다. 결과는 이전 실행과 정확히 동일해야 합니다.

배시 시작

Bash가 모든 배포판의 기본 셸이기 때문에 Bash를 사용하는 모든 Linux 호스트에는 소싱에 대한 몇 가지 우수한 기본 제공 예제가 포함되어 있습니다.

Bash 셸이 시작될 때마다 해당 환경을 사용할 수 있도록 구성해야 합니다. Bash 환경을 구성하는 데 사용되는 5개의 기본 파일과 1개의 디렉토리가 있습니다. 주요 기능과 함께 여기에 나열되어 있습니다.

  • /etc/profile :시스템 전반의 환경 및 시작 프로그램
  • /etc/bashrc :시스템 전체의 함수 및 별칭
  • /etc/profile.d/ :vim과 같은 다양한 명령줄 도구를 구성하기 위한 시스템 전체 스크립트가 포함된 디렉토리 및 mc 시스템 관리자가 생성하는 모든 사용자 정의 구성 스크립트
  • ~/.bash_profile :사용자별 환경 및 시작 프로그램
  • ~/.bashrc :사용자별 별칭 및 기능
  • ~/.bash_logout :사용자가 로그아웃할 때 실행할 사용자별 명령

이 파일을 통해 실행 순서를 추적하고 비 로그인 Bash 초기화와 로그인 Bash 초기화에 사용하는 순서를 결정하십시오. 저는 Linux 교육 시리즈 Linux 사용 및 관리:Zero to sysadmin 1권 17장에서 이 작업을 수행했습니다. .

한 가지 힌트를 드리겠습니다. 모두 ~/.bashrc로 시작합니다. 스크립트.

결론

이 기사에서는 코드 및 변수 할당을 Bash 프로그램으로 가져오기 위한 소싱을 살펴보았습니다. 구성 파일에서 변수를 구문 분석하는 이 방법은 빠르고 쉽고 유연합니다. 비프로그래머가 해당 변수의 값을 설정할 수 있도록 변수 할당에서 Bash 코드를 분리하는 방법을 제공합니다.