私のプロフィールのインクルードチェーンに問題があるか、私のシステムや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
私が逃したものは何ですか?
スクリプトが最初にルートによってロードされ、パスが無効であるため問題があるようです。問題:ユーザーパスの場所を読み込もうとしています。これについて何ができますか?代わりに$ LOGGED_USER変数を追加する必要がありますかif [ -f ~/.nvm ]
?それとも、$HOME?
その変数は何ですか?
さらなる調査の結果、ルートがスクリプトをロードするのは問題のようです。したがって、ルートが常にソースにあるため、ルートがロードされていることを確認するための条件を設定しても、$ HOMEまたは$ USERを使用することはできません。スクリプト。
e.g.
if [[ $EUID -ne 0 ]]; then
USERDIR=$HOME
else
USERDIR=/home/$USER
fi
if [ -f $USERDIR/.nvm ]; then
#...
ルートがこれを取得するのではなく、ユーザーがログインした後にvarチェックを実行する必要があります。
誰かが賢いbashスクリプトのアイデアを考えていない限り、このような内容は/etc/skel/.bash_profileに保存されるようです。 / etc / skelを使用する必要がないように、ここでこれを行う方法についてのアイデアはありますか?