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"
末尾のスペースを整理するときは注意してください。スペースが値に含まれるか、その他の問題が発生する可能性があります。
関連: