コマンド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.
シェルのスタートアップファイルにexport SPARK_HOME=...
などのコマンドを配置します。 bashでは、~/.profile
または~/.bash_profile
になります。
Linuxでは、/etc/environment
は通常、ログイン時にpam_env.so
によって読み取られ、既存の変数の拡張をサポートしていないため、PATH=$PATH:/something
を設定するとになります。リテラルPATH
に表示される文字列$PATH
。これはあなたが望むものではありません。 (例: this と this も参照してください this もお楽しみください)
また、/etc/environment
でPATH
を設定しても機能しない可能性があります。これは、シェルのグローバル起動スクリプトによって書き換えられる可能性があるためです。 (これらはデフォルトで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'
この行はあなたが思っていることをしていません:
echo "export PATH="$SPARK_HOME"/bin:"$PATH >> /etc/environment
問題は、$SPARK_HOME
がecho
の間に評価されていることです($PATH
と同様に、そのファイルにcurrent PATHをおそらく望まないでしょう)。
cat /etc/environment
の場合、線が正しくないことがわかります。
代わりに、
echo 'export PATH="$SPARK_HOME/bin:$PATH"' >> /etc/environment
これは、ファイルをsource
するときに$SPARK_HOME
と$PATH
の値を使用します。