Почему мой файл .bashrc не читается из .profile

в моем файле .profile . У меня есть строка:

# source bashrc if it exists
if [ -f ~/.bashrc ]; then
    source ~/.bashrc
fi

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

В конце сценария установки у меня есть:

# read .profile
source "$USERDIR/.profile"

Где $ USERDIR указывает на мой домашний каталог. Я знаю, что исходный код .profile выполняется правильно, когда выполняется этот сценарий, потому что я повторяю «.profile sourced», и это печатается, когда сценарий завершается.

Однако .bashrc не читается из .profile (когда .profile получен из этого установочного файла). Я не могу понять почему, потому что просто набрав source .profile из bash работает как надо.

Я знаю, что .bashrc не запускается, потому что эхо-строка в моем rc-файле отражается только тогда, когда я напрямую использую источник .profile , а не из этого сценария настройки. Скрипт .bashrc действительно существует, когда я пытаюсь его использовать (поэтому должен выполняться if [-f ~ / .bashrc] ), потому что он создается одновременно. .

0
02.12.2016, 03:11
2 ответа

Один шаг за раз. Добавьте это в .profile

# source bashrc if it exists
if [ -f ~/.bashrc ]; then
    echo ".profile is sourcing " ~/.bashrc
    source ~/.bashrc
fi

и затем вызовите bash как login: bash -l должно быть достаточно.

Делает строку: .profile is sourcing /home/user/.bashrc выводится?

Если да, то проблема может быть в следующем:

  • существуют ли какие-либо из этих файлов: ~/.bash_profile, ~/.bash_login
  • вызывается ли bash с опцией --noprofile?
  • или с вашим скриптом настройки.

Если нет, то проблема в .profile и или .bashrc.

  • возможно, вам следует использовать $HOME вместо ~ для каталога пользователя.
  • возможно, в вашем bashrc есть строка для предотвращения выполнения в неинтерактивном режиме:

    # Если не запущен в интерактивном режиме, ничего не делайте
    [ -z "$PS1" ] && return
    
2
28.01.2020, 02:34

Где $ USERDIR указывает на мой домашний каталог.

А где именно указывает $ HOME ? В bash ~ всегда расширяется до места, где указывает $ HOME . Если вы не можете исходный ~ / .profile , потому что $ HOME настроен неправильно, то ваш $ USERDIR / .profile не сможет источник ~ / .bashrc .

0
28.01.2020, 02:34

Теги

Похожие вопросы