シェルの外部でユーザー環境変数を永久に設定しますか?

シェルの外部でユーザー環境変数を永久に設定しますか?

特定のシェル以外のすべてのシェルからアクセスでき、セッションが終了した後すぐに破棄されない環境変数を設定できますか?

システム全体に変数を設定したいのですが、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

,変数名に区切り文字を許可しない限り、変数と値を区切る区切り記号以外の区切り文字を使用できます。

スクリプトが各ファイルに書きたい部分の周りに一意の区切り文字を挿入することで、これをさらに整理できます。これにより、スクリプトでファイルを更新するたびに、前の項目が繰り返されずに置き換えられます。現場で

おすすめ記事