Должен ли .bashrc в домашнем каталоге загружаться автоматически? - PullRequest
4 голосов
/ 31 марта 2012

Я добавил scala в свой файл .bashrc, но когда я выключил свой Mac и включил его снова, он не нашел его.Когда я делаю

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 ]

35 голосов
/ 31 марта 2012

Я понял эту диаграмму, добавив 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
6 голосов
/ 31 марта 2012

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

  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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...