내 프로필의 포함 체인에 문제가 있거나 내 시스템이나 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을 사용할 필요가 없도록 여기에서 이 작업을 수행하는 방법에 대한 아이디어가 있습니까?