в моем файле .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]
), потому что он создается одновременно. .
Один шаг за раз. Добавьте это в .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
выводится?
Если да, то проблема может быть в следующем:
--noprofile
? Если нет, то проблема в .profile
и или .bashrc
.
возможно, в вашем bashrc есть строка для предотвращения выполнения в неинтерактивном режиме:
# Если не запущен в интерактивном режиме, ничего не делайте
[ -z "$PS1" ] && return
Где
$ USERDIR
указывает на мой домашний каталог.
А где именно указывает $ HOME
? В bash ~
всегда расширяется до места, где указывает $ HOME
. Если вы не можете исходный ~ / .profile
, потому что $ HOME
настроен неправильно, то ваш $ USERDIR / .profile
не сможет источник ~ / .bashrc
.