env
Linux 의 man 은 명령을 실행하기 전에 새로운 환경 변수를 설정할 수 있음을 나타내는 것처럼 보입니다. 불행히도 Linux 시스템에서 파일의 shebang에 새 변수를 설정하면 파일이 실행되지 않습니다.
#!/usr/bin/env VAR1=foo bash
echo $VAR1
CentOS 또는 Ubuntu 컴퓨터에서이 파일을 실행하면 파일이 거기에 있습니다.
$ ./shell-env.sh
<nothing happens>
특히 이상하게 느껴지는 것은 이것이 BSD를 사용하는 OS X에서 완벽하게 작동한다는 것 env
입니다.
$ ./shell-env.sh
foo
$
이것이 BSD env
와 Linux 의 차이점 env
입니까? Linux의 man 페이지에서 BSD와 동일한 방식으로 작동해야한다고 말하는 이유는 무엇입니까?
추신 여기 내 사용 사례는 PATH
변수 를 재정의하는 것이므로 ruby
시스템에서 를 찾을 수 있지만 PATH
.
미리 감사드립니다!
어떤 종류의 래퍼 스크립트를 사용하지 않고 Ruby 스크립트를 실행하기 전에 환경을 조작하는 방법이 있지만 예쁘지는 않습니다.
#!/bin/bash
export FOO=bar
exec ruby -x "$0" "$@"
#!ruby
puts ENV['FOO']
이것은 일반적으로 예를 들어 PATH
또는 LD_LIBRARY_PATH
프로그램을 실행하기 전에 조작해야하는 난해한 상황을 위해 예약 되어 있으며 어떤 이유로 든 자체적으로 포함되어야합니다. Perl과 아마도 다른 사람들에게도 작동합니다!
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다