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
사용 섭취할 수 있습니다.