В твоем случае, sh это ссылка на bashно, как объяснено в man bash:
Если bash вызывается с именем sh, он пытается максимально близко имитировать поведение при запуске исторических версий sh, при этом также соответствует стандарту POSIX. [...] Когда вызывается как интерактивная оболочка с именем sh, bash ищет переменную ENV, расширяет ее значение, если оно определено, и использует расширенное значение в качестве имени файла для чтения и выполнения. поскольку оболочка, вызываемая как sh, не пытается читать и выполнять команды из любых других файлов запуска , опция --rcfile не действует.
а также
--norc Не читать и не выполнять общесистемный файл инициализации /etc/bash.bashrc и личный файл инициализации ~ / .bashrc, если оболочка является интерактивной. Эта опция включена по умолчанию, если оболочка вызывается как sh.
Таким образом, так как используемая по умолчанию оболочка sh, .bashrcне читается. Просто установите оболочку по умолчанию на bash, используя chsh -s /bin/bash.
Спасибо. Я предположил, что это не имеет значения, так как /bin/shуказал /bin/bash. Я предполагаю, что эта проблема возникла из-за того, что я не назначил оболочку явно /bin/bashпри первоначальном создании учетной записи пользователя.
спешка
Кроме того, Debian / Ubuntu переключились dashна работу /bin/shв рамках усилий по сокращению времени запуска. Это было весело, когда мои пользователи начали спрашивать, почему их оболочка действовала по-другому.
Куртм
18
В .bash_profile убедитесь, что у вас есть следующее:
# .bash_profile# If .bash_profile exists, bash doesn't read .profileif[[-f ~/.profile ]];then.~/.profile
fi# If the shell is interactive and .bashrc exists, get the aliases and functionsif[[ $-==*i*&&-f ~/.bashrc ]];then.~/.bashrc
fi
@terdon Ваш ответ правильный. Мой ответ будет действительным, только если он бежит bash. Хороший улов, я пропустил это.
Джайт
Это может вызвать у вас несколько головных болей, если вы работаете bashвместе с другой оболочкой, например, ksh93которая использует .profileпо умолчанию.
Кусалананда
Если ~ / .bash_profile не существует, вы можете его создать.
Пратик
.bashrc в ОС на основе Debain, .bash_profile в CentOS / Fedora / Mac OS
/bin/sh
указал/bin/bash
. Я предполагаю, что эта проблема возникла из-за того, что я не назначил оболочку явно/bin/bash
при первоначальном создании учетной записи пользователя.dash
на работу/bin/sh
в рамках усилий по сокращению времени запуска. Это было весело, когда мои пользователи начали спрашивать, почему их оболочка действовала по-другому.В .bash_profile убедитесь, что у вас есть следующее:
источник
bash
. Хороший улов, я пропустил это.bash
вместе с другой оболочкой, например,ksh93
которая использует.profile
по умолчанию.