2013-05-17 3 views
0

Каждый раз, когда я вхожу в мой VPS, я должен запустить source ~/.bashrc, прежде чем я смогу запустить любые команды, ruby или gem.-bash ruby ​​command не найден

Почему это? Не удается загрузить его по умолчанию?

ssh [email protected] 
ruby -v 
-bash: ruby: command not found 
source ~/.bashrc 
ruby -v 
ruby 1.9.3p429 (2013-05-15 revision 40747) [i686-linux] 

Я установил rvm под deployer.

У меня есть ~/.bash_pofile, который пуст. У меня также есть ~/.profile, который имеет в нем следующее:

if [ -n "$BASH_VERSION" ]; then 
    # include .bashrc if it exists 
    if [ -f "$HOME/.bashrc" ]; then 
     . "$HOME/.bashrc" 
    fi 
fi 

# set PATH so it includes user's private bin if it exists 
if [ -d "$HOME/bin" ] ; then 
    PATH="$HOME/bin:$PATH" 
fi 

Мой ~/.bashrc имеет это в верхней части:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" 

ответ

5

От the bash man page:

Когда Баш вызывается в качестве интерактивного входа в систему shell или как неинтерактивная оболочка с опцией --login, она сначала считывает и выполняет команды из файла /etc/profile, если этот файл существует. После прочтения этого файла он ищет ~/.bash_profile, ~/.bash_login и ~/.profile в этом порядке и считывает и выполняет команды из первого, который существует и доступен для чтения.

Так что в вашем случае (пусто) ~/.bash_profile выполняется, и ваш ~/.profile (и, следовательно, ваш ~/.bashrc) игнорируются. Чтобы решить эту проблему, вам необходимо либо удалить ~/.bash_profile, либо переместить содержимое ~/.profile в ~/.bash_profile.

3

Когда вы входите в систему, если Bash может найти файл с именем .bash_profile в вашем домашнем каталоге, он выполнит его и даже не ищет файл .profile. Таким образом, у вас есть два варианта: либо удалить пустой файл .bash_profile, либо скопировать содержимое .profile в .bash_profile.

2

Перемещение информации с .bashrc в другие файлы, как предложено другими, является одним из способов сделать это.

В противном случае этот фрагмент кода будет делать то же самое, без необходимости перемещать содержимое или удалять файл. В зависимости от способа настройки, вы можете не захотеть удалить файл, если у него есть соответствующая информация в нем для других задач, кроме интерактивного входа.

# if running bash 
if [ -n "$BASH_VERSION" ]; then 
    # include .bashrc if it exists 
    if [ -f "$HOME/.bashrc" ]; then 
     . "$HOME/.bashrc" 
    fi 
fi 

Хотя использование файлов, поскольку они предназначены для использования при чтении документации, может определенно смягчить некоторые разочарования.