디렌브 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
tecmint_projects로 이동할 때마다 디렉토리, .envrc
다음 스크린샷과 같이 파일이 로드됩니다.
$ cd tecmint_projects/
주어진 .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
그것이 우리가 당신을 위해 가진 전부입니다! 질문이나 공유할 생각이 있는 경우 아래 피드백 양식을 사용하세요.