셸 외부에서 사용자 환경 변수를 영구적으로 설정하시겠습니까?

셸 외부에서 사용자 환경 변수를 영구적으로 설정하시겠습니까?

특정 쉘이 아닌 모든 쉘에서 액세스할 수 있고 세션이 끝난 후 즉시 소멸되지 않는 환경 변수를 설정할 수 있습니까?

시스템 전체에 변수를 설정하고 싶은데 NODE_ENV어떻게 해야 합니까?

답변1

관심 있는 모든 쉘이 Bourne과 호환된다면 /etc/profile이 목적으로 사용할 수 있습니다.

제목 /etc/profile:

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...)

csh적용 되었는지 확인하기 위해 tcsh./etc/csh.login

제목 /etc/csh.login:

# /etc/csh.login: system-wide .login file for csh(1) and tcsh(1)

에 대해서는 zsh당신이 원합니다 /etc/zshenv.

유지관리의 용이성을 위해

나는 여러분이 원하는 모든 변수를 파일에 작성하고 간단한 Perl(또는 기타) 스크립트를 작성하여 해당 변수를 읽고 모든 쉘 관련 파일을 업데이트합니다.

Perl에서는 다음과 같이 작동합니다:

 #!/usr/bin/perl

use strict;
use warnings;

my $bourne_file = '/etc/profile';
my $csh_file = '/etc/csh.login';
my $zsh_file = '/etc/zshenv';
open my $BOURNE,'>>', $bourne_file;
open my $CSH,'>>', $csh_file;
open my $ZSH,'>>', $zsh_file;
while(<DATA>){
    chomp;
    my $delimiter = ','; #Change , to whatever delimiter you use in the file

    my ($var, @value) = split /$delimiter/;        
    my $value = join $delimiter,@value;
    print $BOURNE qq{export $var="$value"\n};
    print $CSH    qq{setenv $var "$value"\n};
    print $ZSH    qq{export $var="$value"\n};
}
close $BOURNE;
close $CSH;
close $ZSH;
__DATA__
var1,val1
var2,val2

,변수 이름에 구분 기호를 허용하지 않는 한, 변수와 값을 구분하는 구분 기호 이외의 구분 기호를 사용할 수 있습니다 .

스크립트가 각 파일에 쓰기를 원하는 부분 주위에 고유한 구분 기호를 삽입하여 이를 더욱 정리할 수 있습니다. 그러면 스크립트로 파일을 업데이트할 때마다 이전 항목이 반복되지 않고 대체됩니다.현장에서.

관련 정보