2012-03-31 2 views
3

Я добавил scala в свой .bashrc файл, но когда я отключил свой mac и вернул его обратно, он не нашел его. Когда я сделаюДолжно ли .bashrc в домашнем каталоге загружаться автоматически?

source ~/.bashrc 

все в порядке. Я бы сказал, что проблема связана со всем файлом в целом, но проблема в том, что у меня есть другие вещи, которые раньше работали нормально, но проблема настойчива с scala. Кто-нибудь знает, почему это так, и объясните, почему у меня проблема? Это Что в моем файле .bashrc, который работает RVM и MySQL правильно, но не Scala:

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting 
export PATH="/usr/local/mysql/bin:$PATH" 
export PATH="/Users/Zeroe/scala-2.9.1-1/bin:$PATH" 
+2

См [здесь] (http://apple.stackexchange.com/questions/12993/why-doesnt-bashrc-run-automatically). – ughoavgfhw

+0

Хмм, большое спасибо за ссылку. Я попробую, когда у меня появится шанс. Определенно ставьте это как ответ, чтобы я мог принять его, если он работает. – Andy

ответ

6

Ваша оболочка, вероятно, Войти оболочки, в этом случае баш будет читать различные файлы профиля в порядке:

  1. /etc/profile
  2. ~/.bash_profile
  3. ~/.bash_login
  4. ~/.profile

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

Это то, что мой ~/.profile содержит:

# ~/.profile: executed by the command interpreter for login shells. 
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login 
# exists. 
# see /usr/share/doc/bash/examples/startup-files for examples. 
# the files are located in the bash-doc package. 

# the default umask is set in /etc/profile; for setting the umask 
# for ssh logins, install and configure the libpam-umask package. 
#umask 022 

# if running bash 
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 
export LANGUAGE="en_US:en" 
export LC_MESSAGES="en_US.UTF-8" 
export LC_CTYPE="en_US.UTF-8" 
export LC_COLLATE="en_US.UTF-8" 
26

Я понял эту схему, добавив echo "${BASH_SOURCE[0]}" в эти сценарии.

     +-----------------+ +------FIRST-------+ +-----------------+ 
        |     | | ~/.bash_profile | |     | 
login shell -------->| /etc/profile |-->| ~/.bash_login ------>| ~/.bashrc  | 
        |     | | ~/.profile  | |     | 
        +-----------------+ +------------------+ +-----------------+ 
        +-----------------+ +-----------------+ 
        |     | |     | 
interactive shell -->| ~/.bashrc -------->| /etc/bashrc  | 
        |     | |     | 
        +-----------------+ +-----------------+ 
        +-----------------+ 
        |     | 
logout shell ------->| ~/.bash_logout | 
        |     | 
        +-----------------+ 

Примечание

  1. []-->[] означает source by workflow (Автоматически).
  2. [--->[] означает source by convention (вручную. Если нет, ничего не происходит.).
  3. FIRST означает find the first available, ignore rest
+0

Это действительно отличный ответ. –

+0

Хорошая картинка - намного лучше, чем стена текстовых документов, обычно встречающихся на этом материале. –

Смежные вопросы