/etc/environmentで変数を設定すると効果はありませんが、コマンドラインで設定すると[冗長]になります。

/etc/environmentで変数を設定すると効果はありませんが、コマンドラインで設定すると[冗長]になります。

コマンドが正しく機能するように特定の環境変数を設定していますpyspark。変数を設定し/etc/environmentてインポートすると機能しません。ただし、コマンドラインで設定すると機能しますが、もちろんこのセッションでのみ機能します。私の意図は、セッションを再開しても入ることができるようにグローバルに設定することです。pyspark

/etc/environment に設定

[root@localhost ~]# more /etc/environment
[root@localhost ~]# echo "export SPARK_HOME=/srv/spark" >> /etc/environment
[root@localhost ~]# echo "export PATH="$SPARK_HOME"/bin:"$PATH >> /etc/environment
[root@localhost ~]# echo "export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk" >> /etc/environment
[root@localhost ~]# source /etc/environment
[root@localhost ~]# pyspark --version
-bash: pyspark: command not found

コマンドラインで設定

[root@localhost ~]# export SPARK_HOME=/srv/spark
[root@localhost ~]# export PATH=$SPARK_HOME/bin:$PATH
[root@localhost ~]# export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk
[root@localhost ~]# pyspark --version
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 1.6.1
      /_/

Type --help for more information.

ベストアンサー1

export SPARK_HOME=...他のコマンドをシェルの起動ファイルに入れます。 bashの場合、これは~/.profileまたはです~/.bash_profile


Linuxでは/etc/environment通常、ログイン時に読み込まれ、pam_env.so既存の変数拡張はサポートされていないため、設定すると次のPATH=$PATH:/something結果が得られます。言葉文字列$PATHがに表示されますPATH。これはあなたが望むものではありません。 (例えばこれそしてこれ、また楽しくこれ.)

また、シェルのグローバル起動スクリプトがその設定を上書きできるため、設定が機能しない可能性がありPATHます。/etc/environment(Debianではデフォルトで実行され、私が持っている以前のCentOSでは起動スクリプトが一番前にあるようですPATH。)

システムがそれを使用せpam_env.soずにスクリプトを手動で取得するだけでなく、これらの考慮事項は重要ではありません。しかし、少なくともいくつかのLinuxディストリビューションで広く使用されているように見えるので、別のファイル名を使用することをお勧めします。


(これは他の答えとまったく逆であるため、以前のCentOSでテストしました。)

次の内容を入れました/etc/environment

export FOO1=bar
export FOO2=foo:$FOO

もう一度ログインすると、set | grep FOO次のようになります。

FOO1=bar
FOO2='foo:$FOO'

おすすめ記事