sh 加载哪个配置文件
Which profile does sh loads
我正在尝试从 sh 中加载特定工具 (nvm)。
按照 bash 页面中的说明安装它,它完美运行并测试它 returns 以下内容。
$ bash
$ nvm --version
+ X.XX.X
但是如果我输入
$ sh
$ nvm --version
+ sh: 1: nvm: not found
但仍然是预期的,因为默认安装会修改 .bashrc
。
现在我在 /etc/profile
中包含了相同的 .bashrc
代码
export NVM_DIR="/opt/nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
并再次尝试。
$ sh
$ nvm --version
+ sh: 1: nvm: not found
$ echo $NVM_DIR
+ /dir/to/nvm
$ [ -s "$NVM_DIR/nvm.sh" ] && echo "it works?"
+ it works?
$ [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
$ nvm --version
X.XX.X
这让我非常困惑。到底发生了什么? sh
不是在加载 /etc/profile
还是我做错了什么?
--评论后编辑--
还尝试将其包含在本地配置文件中
$ cat ~/.profile
+ export NVM_DIR="/opt/nvm"
+ [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
$ sh
$ nvm --version
+ sh: 1: nvm: not found
this 文章中用 sh 蓝线描述了该问题。
该问题的解决方案是在 ENV
变量中设置 /etc/profile/
。
例如 ENV=/etc/profile sh
将在 sh 打开时加载配置文件。那解决了问题
我正在尝试从 sh 中加载特定工具 (nvm)。
按照 bash 页面中的说明安装它,它完美运行并测试它 returns 以下内容。
$ bash
$ nvm --version
+ X.XX.X
但是如果我输入
$ sh
$ nvm --version
+ sh: 1: nvm: not found
但仍然是预期的,因为默认安装会修改 .bashrc
。
现在我在 /etc/profile
.bashrc
代码
export NVM_DIR="/opt/nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
并再次尝试。
$ sh
$ nvm --version
+ sh: 1: nvm: not found
$ echo $NVM_DIR
+ /dir/to/nvm
$ [ -s "$NVM_DIR/nvm.sh" ] && echo "it works?"
+ it works?
$ [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
$ nvm --version
X.XX.X
这让我非常困惑。到底发生了什么? sh
不是在加载 /etc/profile
还是我做错了什么?
--评论后编辑--
还尝试将其包含在本地配置文件中
$ cat ~/.profile
+ export NVM_DIR="/opt/nvm"
+ [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
$ sh
$ nvm --version
+ sh: 1: nvm: not found
this 文章中用 sh 蓝线描述了该问题。
该问题的解决方案是在 ENV
变量中设置 /etc/profile/
。
例如 ENV=/etc/profile sh
将在 sh 打开时加载配置文件。那解决了问题