このカスタムノードパスを/etc/profile.dスクリプトに追加できないのはなぜですか?

このカスタムノードパスを/etc/profile.dスクリプトに追加できないのはなぜですか?

私のプロフィールのインクルードチェーンに問題があるか、私のシステムや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を使用する必要がないように、ここでこれを行う方法についてのアイデアはありますか?

ベストアンサー1

おすすめ記事