부러워하다
env운영 체제 | Unix, Unix 라이크, Inferno |
---|---|
플랫폼 | 크로스 플랫폼 |
유형 | 명령어 |
면허증. | 코어 유틸리티: GPLv3+ |
env
는 Unix 및 Unix 유사 운영체제용 셸 명령어입니다.현재 환경을 수정할 필요 없이 환경 변수 목록을 인쇄하거나 변경된 환경에서 다른 유틸리티를 실행하는 데 사용됩니다.사용.env
변수를 추가하거나 삭제할 수 있으며 기존 변수는 새 값을 할당하여 변경할 수 있습니다.
실제로,env
또 다른 일반적인 용도가 있습니다.셸 스크립트에서 올바른 인터프리터를 기동하기 위해 자주 사용됩니다.이 사용법에서는 일반적으로 환경은 변경되지 않습니다.
역사
의 버전env
GNUcoreutils 번들은 Richard Mlynarik, David MacKenzie 및 Assaf [1]Gordon에 의해 작성되었습니다.4.4년에 처음 등장했습니다.BSD 및 POSIX.1의 일부입니다(와-i 옵션만)[2]
GNU의 환경은 신호와 현재 [1]디렉토리를 처리하도록 확장되었습니다.FreeBSD의 env는 커스텀 검색 경로를 지원합니다.두 버전 모두 변수 설정을 위한 -u와 인수를 분할하기 위한 -S(주로 shebang)[2]가 있습니다.
예
현재 환경 변수 세트를 인쇄하려면:
부러워하다
새 셸에 대한 기존 환경 변수 없이 새 환경을 만들려면 다음 절차를 따릅니다.
env - i / bin / sh
X 응용 프로그램 xcalc를 실행하여 다른 디스플레이에 표시하려면(즉, 지정된 환경 변수가 새 값으로 대체되는지 여부를 수정한 환경에서) 다음을 수행합니다.
env DISPLAY = foo.bar:1.0 xcalc
대부분의 셸은 명령어 앞에 환경변수 설정을 지원하므로 env를 사용할 필요가 없습니다.
디스플레이=foo.bar:1.0 xcalc
env는 스크립트의 해시방 행에서 사용하여 PATH 경유로 인터프리터를 검색할 수도 있습니다.예를 들어 Python 스크립트의 코드는 다음과 같습니다.
#!/usr/bin/env python3 print("안녕하세요, 월드!")
이 예에서는,/usr/bin/env
의 풀 패스입니다.env
명령어를 입력합니다.환경은 변경되지 않습니다.
를 사용하지 않고 인터프리터를 지정할 수 있습니다.env
, 의 풀 패스를 지정함으로써python
통역사.이 접근방식의 문제는 컴퓨터 시스템에 따라 정확한 경로가 다를 수 있다는 것입니다.대신 을 사용하여env
예시와 같이 인터프리터는 스크립트 실행 시 검색되어 검색됩니다(정확히 말하면,env
시스템이 에 콜을 발신합니까?execvp
인터프리터를 찾아 기동합니다).이로 인해 스크립트는 보다 휴대성이 향상되지만 실행 가능한 검색 경로의 모든 디렉토리에서 일치하는 인터프리터가 검색되기 때문에 잘못된 인터프리터가 선택될 위험도 높아집니다.또, 같은 문제에 시달리고 있습니다.그것은, 에의 패스가env
바이너리는 머신마다 다를 수도 있습니다.