我按照这里的 `https://github.com/nodesource/distributions` 方式在 `ubuntu22.04` 上安装 nodejs 和 npm  但是遇到了问题,当我执行下面的命令 NODE_MAJOR=18 echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list 我发现 NODE_MAJOR 并没有填充 pon@T4GPU:~/code/me/reflex_example$ cat /etc/apt/sources.list.d/nodesource.list deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_.x nodistro main 可以看到,结果不是 `https://deb.nodesource.com/node_18.x` 而是 `https://deb.nodesource.com/node_.x` > 我用的是 bash 为什么把 NODE_MAJOR=18 加在命令开头却不行,理论上,这也是一种正确传递环境变量的方式之一? * * * 加个分号也可以, 但是在使用 python 的时候,是可以不加 `;` pon@T4GPU:~/code/me/reflex_example$ NODE_MAJOR=18; echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main 难道是因为,不加分号,只对该 shell 的子进程可见,shell 本身不可见? * * * 比如我写一个 python 程序 `main.py` import os print(os.environ['RUN_MODE']) 然后调用 pon@T4GPU:~/code/me/reflex_example$ python main.py Traceback (most recent call last): File "/home/pon/code/me/reflex_example/main.py", line 2, in print(os.environ['RUN_MODE']) ~~~~~~~~~~^^^^^^^^^^^^ File "", line 679, in __getitem__ KeyError: 'RUN_MODE' pon@T4GPU:~/code/me/reflex_example$ RUN_MODE=prd python main.py prd 可以看到直接 `python main.py` 会报错,但是 `RUN_MODE=prd python main.py` 是正常的