/ etc / environmentで定義されている環境変数からこの追加の見積もりを受け取るのはなぜですか?

/ etc / environmentで定義されている環境変数からこの追加の見積もりを受け取るのはなぜですか?

CentOSサーバーでenv変数がNODE_OPTIONS無効な値に設定されています。 /etc/environment、/etc/profileなどの可能なファイルを確認しましたが、運がありませんでした。また、/ etc /でgrepingを試しましたが、まだ成功していません。これは私を怒らせる。

私はこれを試しました: https://unix.stackexchange.com/a/154971/92712

出力にそのような変数がないことに驚きました。しかしそれは

printenv NODE_OPTIONS 
set | grep NODE_OPTIONS
echo $NODE_OPTIONS

(シェルはbashです)

このNODE_OPTIONSがどのファイルから来るのかを知る方法はありますか?


追加情報:

$ node -v
node: invalid value for NODE_OPTIONS (unterminated string)

$ echo $NODE_OPTIONS
--max-old-space-size=5120"

$ cat /etc/environment  
export NODE_OPTIONS="--max-old-space-size=5120"

修正する:

@ilkkachu ありがとう

$ declare -p NODE_OPTIONS
declare -x NODE_OPTIONS="--max-old-space-size=5120\" "

更新2:追加の二重引用符も出力envに表示されます。

$ env
NODE_OPTIONS=--max-old-space-size=5120"

アップデート3:ありがとう@Johan Myréen

$ od -c /etc/environment
0000000  \n   e   x   p   o   r   t       N   O   D   E   _   O   P   T
0000020   I   O   N   S   =   "   -   -   m   a   x   -   o   l   d   -
0000040   s   p   a   c   e   -   s   i   z   e   =   5   1   2   0   "
0000060       #   i   n   c   r   e   a   s   e       t   o       5   g
0000100   b  \n  \n
0000103

ベストアンサー1

$ cat /etc/environment  
export NODE_OPTIONS="--max-old-space-size=5120"

だから/etc/environment少し変です。pam_env.so、で構成されています。マニュアルページこれは以下を含める必要があることを意味するので、「別々のラインにある単純なKEY=VALペア」また、一部のバージョンのマニュアルページにもこの内容が記載されています。"bash 互換性のためにエクスポートディレクティブを指定できますが、無視されます。"

とにかく、シェルはこれを読みませんが、すべてのシェル構文がサポートされているわけではありません。マニュアルページには引用符の記載はなく、バックスラッシュのエスケープやその他の変数の拡張はサポートしていません。PATH=$PATH:/some/pathつまり、またはFOOPATH=$HOME/foo動作しません。

#しかし、これはすべてではありません。少なくとも私のDebianでは、行の途中でもシンボルをコメントマークとして扱うようです。値の先頭と終わり(存在する場合)から引用符を削除しますが、一致するかどうかは関係ありません。

たとえば、左側に2行がある場合、右側に2つの値が表示されます。

/etc/environment 結果変数
TEST1="hash#sign" TEST1=hash
TEST2="mixed quotes' TEST2=mixed quotes

od出力によると、/etc/environment実際には次の行が含まれています。

export NODE_OPTIONS="--max-old-space-size=5120" #increase to 5gb

ハッシュ記号で切り捨てられますが、閉じる引用符の後にスペースがあるため、引用符が認識または削除されず、値にスペースと引用符の両方が表示されます。

「簡易キーと値のペア」のマニュアルの内容に従うには、次のものを使用できます。

# increase to 5 GB
NODE_OPTIONS=--max-old-space-size=5120

ただし、上記のコメントと観察に基づいて、次のようにexport機能することもできます。

# increase to 5 GB
export NODE_OPTIONS="--max-old-space-size=5120"

末尾のスペースを整理するときは注意してください。スペースが値に含まれるか、その他の問題が発生する可能性があります。

関連:

おすすめ記事