特定のシェル以外のすべてのシェルからアクセスでき、セッションが終了した後すぐに破棄されない環境変数を設定できますか?
システム全体に変数を設定したいのですが、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
,
変数名に区切り文字を許可しない限り、変数と値を区切る区切り記号以外の区切り文字を使用できます。
スクリプトが各ファイルに書きたい部分の周りに一意の区切り文字を挿入することで、これをさらに整理できます。これにより、スクリプトでファイルを更新するたびに、前の項目が繰り返されずに置き換えられます。現場で。