我的配置文件的包含链可能有问题,或者我的系统或我对 profile.d (RHEL7) 的理解可能有问题。
我添加了一个/etc/profile.d
.sh
用于节点安装的脚本,同时尝试清理 .bashrc。问题是它没有$PATH
像我希望的那样附加。
请注意,该问题既通过我的主终端(通过 putty 进行 ssh)发生,也直接从控制台本身发生。
$ cat ~/.bash_profile
#
# .bash_profile
#
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
$ cat /etc/profile.d/nvm_path.sh
# This adds node/nvm(node version manager) to path, and then initializes nvm, and its bash completion
#Load NVM
if [ -f ~/.nvm ]; then
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
if [ -f $NVM_DIR/bash_completion ]; then
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
fi
fi
# Force npm onto the path (only needed if its not available on your node installation)
if [ -f ~/.npm/ ]; then
PATH=$PATH:$HOME/.npm
fi
# Include node_mod bins in PATH, which are usually symlinked here (gulp,
# cordova, etc..)
if [ -f $HOME/.npm-packages/bin ]; then
#note is a hyphen, not an underscore
PATH=$PATH:$HOME/.npm-packages/bin
fi
export PATH
就/etc/profile
其本身而言,我的理解是,权限可以是只读的,因为它们是来源的,而不是执行的,所以我认为这不是问题。-rw-r--r--. 1 root root 1795 May 4 2016 profile
我错过了什么?
我认为问题出在某个地方,因为脚本最初是由 root 加载的,所以路径无效。问题:我尝试加载用户路径的位置。关于这个还能做什么?我是否需要添加 $LOGGED_USER 变量来代替if [ -f ~/.nvm ]
,甚至可能$HOME?
该变量是什么?
经过进一步研究,问题似乎是 root 正在加载脚本,因此 $HOME,甚至 $USER,永远不可用,即使我在那里设置一个条件来检查 root 是否正在加载,因为 root 总是在源代码剧本。
e.g.
if [[ $EUID -ne 0 ]]; then
USERDIR=$HOME
else
USERDIR=/home/$USER
fi
if [ -f $USERDIR/.nvm ]; then
#...
我需要在用户登录后进行 var 检查,而不是在 root 获取它时进行。
看起来像这样的东西注定会出现在 /etc/skel/.bash_profile 中,除非有人想出了一个聪明的 bash 脚本想法。关于如何在这里完成此操作的任何想法,以便我不必使用 /etc/skel?