Windowsには、 setx
というpowershellコマンドがあります。これは、ユーザーまたはシステム環境の環境変数を作成または変更します。
Ubuntuにも同様のコマンドがありますか?つまり、nano
またはvi
を使用せず、システム全体で環境変数を追加または更新するために1行だけです。
追加/更新する1行
grep env_name /etc/environment && sed -i.bak 's/env_name=.*/env_name="env_value"/' /etc/environment || echo 'env_name="env_value"' >> /etc/environment
これを行うには、コマンドラインで新規として宣言するか、再宣言します。たとえば、~/testfolder
をパス変数に追加する場合、現在のターミナルに入力するだけです(これは単なる例です)。
PATH="$HOME/testfolder:$PATH"
もちろん、これは、ターミナルセッションが開いていると言っている間だけ変更します。 $
の使用法に注意してください。宣言のために省略しますが、表示する場合は、$
を追加してその内容を展開する必要があります。
それらをより永続的かつ一般的に宣言したい場合は、~/.bashrc
(あなた専用)ファイルまたは/etc/bash.bashrc
(システム全体)に追加できます。またはすべてのユーザー向け。別のオプションは、.profile
ファイル(自分用のみ)に追加して、ログインした瞬間から実行できるようにすることです。たとえば、この変数が確実な場合は、echo
でこれを実行できます。は既に設定されていないか、新しいものを作成する場合(例のみ):
echo "variable=value" >> /path/filename
ただし、/etc/bash.bashrc
を編集する場合に、ユーザーディレクトリ外のファイルを編集する場合は、Sudo
を使用する必要があります。したがって、単純に 'here document'を使用することはできません。代わりに、次のような行を使用してください:
echo "variable=value" | Sudo tee -a /path/filename
ただし、変数が既に存在する場合は、sed
コマンドを使用して変更できます(例のみ)。
sed -i.bak 's/variable=value/variable=new-value/' /path/filename
これにより、ファイル内の変数が編集されますが、編集前に変数のバックアップが作成されます。 sedを使用してユーザーディレクトリ外のファイルを変更する場合、ほとんどの場合はSudo
を使用する必要があるため、行は次のようになります。
Sudo sed -i.bak 's/variable=value/variable=new-value/' /path/filename
ファイルから変数を削除するには、sed
も使用できます。正規表現の2番目の部分は空のままにします。
sed -i.bak 's/variable=value//' /path/filename
興味のある環境変数が設定されている場合は、env
コマンドを使用して、( set -o posix ; set ) | less
またはsh -c set
をリストできます。 3つすべてがさまざまな量の出力を提供し、( set -o posix ; set ) | less
は実際に設定されているほとんどの変数を返します。
setx /m
に直接相当するものはありませんが、setx /m
の機能を実現する方法があります。
setx /m
はvariable=value
をHKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
に入れます。 Non-/m(つまり、ユーザーごと)setx
は、単にvariable=value
をHKCU\Environment
に入れます。
特に「システム全体」を要求しました。そのためには、変数値ペアを/etc/environment
OR to /etc/profile.d/<yourfile>
のいずれかに追加します。前者はpamによって評価され、後者は/bin/sh
によって評価されます。したがって、/etc/profile.d/<yourfile>
にvariable=value; export variable
を追加します。 (bashはexport variable=value
も許可します)。 /etc/environment
の場合、variable=value
を追加します。
ユーザーごとの同等のものは、~/.pam_environment
および~/.profile
です。
コマンドラインで環境変数をエクスポートできますが、現在のプロセスとそのサブプロセスでのみ、既に開始されているプロセスの有効な環境には影響しません。そのため、実際には、環境変数を変更するときに再ログインする必要があります。