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

Direnv – Linux에서 프로젝트별 환경 변수 관리

디렌브 Linux 및 macOS와 같은 UNIX 운영 체제의 셸을 위한 멋진 오픈 소스 확장입니다. 단일 정적 실행 파일로 컴파일되며 bash와 같은 셸을 지원합니다. , zsh , tcsh , 그리고 물고기.

direnv의 주요 목적 ~/.profile을 어지럽히지 않고 프로젝트별 환경 변수를 허용하는 것입니다. 또는 관련 쉘 시작 파일. 현재 디렉토리에 따라 환경 변수를 로드 및 언로드하는 새로운 방법을 구현합니다.

12factor를 로드하는 데 사용됩니다. 앱(Software-as-a-Service 앱을 빌드하기 위한 방법론) 환경 변수, 프로젝트별로 격리된 개발 환경을 만들고 배포를 위한 비밀 로드도 수행합니다. 또한 rbenv와 유사한 다중 버전 설치 및 관리 솔루션을 구축하는 데 사용할 수 있습니다. , pyenv 및 phpenv .

direnv는 어떻게 작동합니까?

쉘이 명령 프롬프트를 로드하기 전에 direnv .envrc의 존재를 확인합니다. 현재 파일(pwd 명령을 사용하여 표시할 수 있음) 및 상위 디렉토리에 있습니다. 확인 프로세스는 신속하며 각 프롬프트에서 확인할 수 없습니다.

.envrc를 찾으면 적절한 권한이 있는 파일을 bash 하위 셸에 로드하고 내보낸 모든 변수를 캡처하여 현재 셸에서 사용할 수 있도록 합니다.

리눅스 시스템에 direnv 설치

대부분의 Linux 배포판에서 direnv 패키지는 표시된 대로 시스템 패키지 관리자를 사용하여 기본 저장소에서 설치할 수 있습니다.

$ sudo apt install direnv		#Debian,Ubuntu and Mint
$ sudo dnf install direnv		#Fedora

Red Hat Enterprise Linux와 같은 기타 배포판 (RHEL ) 및 CentOS 또는 스냅을 지원하는 모든 배포판은 스냅으로 설치할 수 있습니다. . 이를 위해서는 시스템에 snapd가 설치되어 있어야 합니다.

$ sudo snap install direnv

direnv를 Bash 셸에 연결하는 방법

direnv 설치 후 , 현재 Linux 셸에 연결해야 합니다. 예를 들어 Bash , ~/.bashrc 끝에 다음 줄을 추가합니다. 파일.

rvm 이후에도 표시되는지 확인 , git 프롬프트 및 프롬프트를 조작하는 기타 쉘 확장자.

eval "$(direnv hook bash)"

ZSH 쉘의 경우

~/.zshrc 끝에 다음 줄을 추가합니다. 파일:

eval "$(direnv hook zsh)" 

FISH 쉘용

~/.config/fish/config.fish 끝에 다음 줄을 추가합니다. 파일:

eval (direnv hook fish)

그런 다음 활성 터미널 창을 닫고 새 셸을 열거나 그림과 같이 파일을 소싱합니다.

$ source ~/.bashrc
$ source  ~/.zshrc 
$ source ~/.config/fish/config.fish

Linux 셸에서 direnv를 사용하는 방법

direnv 방법을 보여주기 위해 작동하면 tecmint_projects라는 새 디렉토리를 만듭니다. 그리고 그 안으로 이동합니다.

$ mkdir ~/tecmint_projects
$ cd tecmint_projects/

다음으로 TEST_VARIABLE이라는 새 변수를 만들어 보겠습니다. 명령줄에서 반향될 때 값은 비어 있어야 합니다.

$ echo $TEST_VARIABLE

이제 우리는 새로운 .envrc를 생성할 것입니다. direnv에 의해 로드될 Bash 코드가 포함된 파일 . 또한 "export TEST_VARIABLE=tecmint 행을 추가하려고 합니다. "에 echo 명령과 출력 리디렉션 문자 (>)를 사용합니다. :

$ echo export TEST_VARIABLE=tecmint > .envrc

기본적으로 보안 메커니즘은 .envrc의 로드를 차단합니다. 파일. 보안 파일임을 알고 있으므로 다음 명령을 실행하여 콘텐츠를 승인해야 합니다.

$ direnv allow .

이제 .envrc의 내용이 파일을 로드할 수 있습니다. TEST_VARIABLE 값을 확인해 보겠습니다. 이전에 설정한 항목:

$ echo $TEST_VARIABLE

tecmint_project를 종료할 때 디렉토리, direnv 언로드되고 TEST_VARIABLE 값을 확인하면 다시 한 번, 비어 있어야 합니다.

$ cd ..
$ echo $TEST_VARIABLE
Direnv – Linux에서 프로젝트별 환경 변수 관리

tecmint_projects로 이동할 때마다 디렉토리, .envrc 다음 스크린샷과 같이 파일이 로드됩니다.

$ cd tecmint_projects/
Direnv – Linux에서 프로젝트별 환경 변수 관리

주어진 .envrc의 승인을 취소하려면 , 거부 사용 명령.

$ direnv deny .			#in current directory
OR
$ direnv deny /path/to/.envrc

자세한 내용 및 사용 지침은 direnv를 참조하세요. 매뉴얼 페이지:

$ man direnv

또한 direnv stdlib도 사용합니다. (direnv-stdlib )에는 PATH에 새 ​​디렉토리를 쉽게 추가할 수 있는 여러 기능이 있습니다. 훨씬 더 많은 일을 할 수 있습니다.

사용 가능한 모든 기능에 대한 문서를 찾으려면 direnv-stdlib를 확인하세요. 수동 입력 페이지:

$ man direnv-stdlib

그것이 우리가 당신을 위해 가진 전부입니다! 질문이나 공유할 생각이 있는 경우 아래 피드백 양식을 사용하세요.