web-dev-qa-db-ja.com

Ubuntuで同等の「setx」

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
9
Ayman

これを行うには、コマンドラインで新規として宣言するか、再宣言します。たとえば、~/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は実際に設定されているほとんどの変数を返します。

12
Videonauth

setx /mに直接相当するものはありませんが、setx /mの機能を実現する方法があります。

setx /mvariable=valueHKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environmentに入れます。 Non-/m(つまり、ユーザーごと)setxは、単にvariable=valueHKCU\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です。

参照: https://help.ubuntu.com/community/EnvironmentVariables

11
Cyrus Patel

コマンドラインで環境変数をエクスポートできますが、現在のプロセスとそのサブプロセスでのみ、既に開始されているプロセスの有効な環境には影響しません。そのため、実際には、環境変数を変更するときに再ログインする必要があります。

7