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

소스 명령을 사용하여 함수 및 변수를 Bash로 가져오기

Linux 셸에 로그인하면 특정 작업 환경을 상속받습니다. 환경 , 쉘 컨텍스트에서 는 특정 변수가 이미 설정되어 있어 명령이 의도한 대로 작동함을 의미합니다. 예를 들어, PATH 환경 변수는 쉘이 명령을 찾는 위치를 정의합니다. 이것이 없으면 Bash에서 시도하는 거의 모든 것이 명령을 찾을 수 없음으로 실패합니다. 오류. 일상 업무를 수행할 때 대부분 눈에 보이지 않는 환경은 매우 중요합니다.

셸 환경에 영향을 주는 방법에는 여러 가지가 있습니다. ~/.bashrc와 같은 구성 파일을 수정할 수 있습니다. 및 ~/.profile , 시작할 때 서비스를 실행할 수 있으며 고유한 사용자 지정 명령을 만들거나 고유한 Bash 기능을 스크립팅할 수 있습니다.

소스를 사용하여 환경에 추가

Bash(일부 다른 쉘과 함께)에는 source라는 내장 명령이 있습니다. . 혼란스러울 수 있는 부분은 다음과 같습니다. source . (예, 그것은 하나의 점에 불과합니다) 그리고 그것은 아니다 동일한 source Tcl로 명령(man source를 입력하면 화면에 나타날 수 있음) ). 내장 source 명령이 PATH에 없습니다. 전혀, 사실. Bash의 일부로 포함된 명령이며 이에 대한 추가 정보를 보려면 help source를 입력하세요. .

. 명령은 POSIX와 호환됩니다. source 명령은 POSIX에 의해 정의되지 않지만 . 명령.

Bash help에 따르면 , source 명령은 현재 쉘에서 파일을 실행합니다. "in your current shell" 절은 하위 셸을 시작하지 않는다는 의미이므로 중요합니다. 따라서 source로 무엇을 실행하든 현재 내에서 발생하고 영향을 미칩니다. 환경.

source 방법을 살펴보기 전에 환경에 영향을 줄 수 있습니다. source를 사용해 보세요. 테스트 파일에서 예상대로 코드를 실행하는지 확인합니다. 먼저 간단한 Bash 스크립트를 만들고 hello.sh라는 파일로 저장합니다. :

#!/usr/bin/env bash
"hello world" 에코

source 사용 , 실행 비트를 설정하지 않고도 이 스크립트를 실행할 수 있습니다.

$ 소스 hello.sh
안녕하세요

내장된 . 동일한 결과에 대한 명령:

$ . hello.sh
안녕하세요

source. 명령은 테스트 파일의 내용을 성공적으로 실행합니다.

변수 설정 및 함수 가져오기

source를 사용할 수 있습니다. include를 사용하는 것처럼 파일을 쉘 환경으로 "가져오기" 라이브러리 또는 import를 참조하는 C 또는 C++의 키워드 모듈을 가져오는 Python의 키워드. 이것은 source의 가장 일반적인 용도 중 하나입니다. , 그리고 .bashrc의 일반적인 기본 포함입니다. 파일을 source.bash_aliases라는 파일 정의한 모든 사용자 지정 별칭은 로그인할 때 환경으로 가져올 수 있습니다.

다음은 Bash 함수를 가져오는 예입니다. 먼저 myfunctions라는 파일에 함수를 만듭니다. . 이렇게 하면 공개 IP 주소와 로컬 IP 주소가 인쇄됩니다.

함수 myip() {
        curl https://icanhazip.com      

        ip addr | grep inet$IP | \
       컷 -d"/" -f 1 | \
        grep -v 127\.0 | \
        grep -v \:\:1 | \
        awk '{$1=$1};1'
}

함수를 쉘로 가져오기:

$ source myfunctions 

새 기능 테스트:

$ myip
93.184.216.34
inet 192.168.0.23
inet6 fbd4:e85f:49c:2121:ce12:ef79:0e77:59d1
inet 10.8. 사전>

소스 검색

source를 사용하는 경우 Bash에서는 현재 디렉토리에서 참조하는 파일을 검색합니다. 이것은 모든 쉘에서 발생하는 것은 아니므로 Bash를 사용하지 않는 경우 문서를 확인하십시오.

Bash가 실행할 파일을 찾지 못하면 PATH를 검색합니다. 대신에. 다시 말하지만 이것은 모든 셸의 기본값이 아니므로 Bash를 사용하지 않는 경우 설명서를 확인하십시오.

이 두 가지 모두 Bash의 편리한 기능입니다. 이 동작은 드라이브의 중앙 집중식 위치에 공통 기능을 저장한 다음 환경을 통합 개발 환경(IDE)처럼 취급할 수 있기 때문에 놀라울 정도로 강력합니다. 함수가 /usr/include 와 같은 로컬에 있다는 것을 알고 있기 때문에 함수가 저장되는 위치에 대해 걱정할 필요가 없습니다. , 그래서 당신이 그것들을 소싱할 때 당신이 어디에 있든 Bash는 그것들을 찾습니다.

예를 들어, ~/.local/include라는 디렉토리를 만들 수 있습니다. 공통 기능을 위한 저장 영역으로 사용하고 이 코드 블록을 .bashrc에 넣습니다. 파일:

$HOME/.local/include/*의 i에 대해;
  $i 소스 수행
완료

이것은 ~/.local/include에 사용자 정의 함수를 포함하는 모든 파일을 "가져오기"합니다. 쉘 환경으로.

Bash는 현재 디렉토리와 PATH를 모두 검색하는 유일한 셸입니다. source를 사용할 때 또는 . 명령.

오픈 소스용 소스 사용

source 사용 또는 . 파일을 실행하는 것은 변경 사항을 모듈로 유지하면서 환경에 영향을 미치는 편리한 방법이 될 수 있습니다. 다음에 큰 블록의 코드를 복사하여 .bashrc에 붙여넣을 생각이라면 파일, 관련 기능 또는 별칭 그룹을 전용 파일에 배치한 다음 source 사용 섭취할 수 있습니다.