コマンドが正しく機能するように特定の環境変数を設定しています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'
答え2
このコード行はあなたが思うものとは異なります。
echo "export PATH="$SPARK_HOME"/bin:"$PATH >> /etc/environment
問題は$SPARK_HOME
評価中に発生しますecho
(現状のまま$PATH
、望ましくない可能性があります)。現在のこのファイルへのパス)。
cat /etc/environment
この行が正しく見えないことがわかったら。
代わりに
echo 'export PATH="$SPARK_HOME/bin:$PATH"' >> /etc/environment
これにより、ファイルの作成時に$SPARK_HOME
値が使用されます。$PATH
source