Как сказано в в этом посте , ~/.bashrc
автоматически создается на сервере Ubuntu 12.04 LTS, который я использую. Я не знаю, откуда он получил эту информацию, но, поскольку она еще не была отклонена, я считаю, что это правда.
Я использовал этот скрипт, чтобы проверить его источник:
if [ -f ~/.bashrc ]; then
echo "Not sourced!";
fi
Только для информации: разрешения на данный момент 775, а владелец - я.
Так почему же мои ~/.bashrc
не получены?
Как мы узнали, у вас нет файла .profile
в вашем доме. Посмотрите руководство bash здесь для файлов запуска Bash.
Сделайте .profile для себя:
nano ~/.profile
Вставьте этот текст в этот файл (скопированный из Debian Squeeze):
# ~/.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
Совет: если вы создаете нового пользователя, используйте переключатель -m
, чтобы сделать его директором, и поместите файлы по умолчанию, например: sudo useradd example -m -d /home/example
Вы можете точно видеть, что выполняется, используя подробный режим bash.
Для оболочки без входа в систему:
$ bash -v 2>&1 | less
Для оболочки входа в систему:
$ bash -vl 2>&1 | less
У меня нет под рукой системы 12.04, чтобы подтвердить выполнение .bashrc при использовании логина. Я вполне уверен, что это так. Если это не так, я бы предположил, что вы или кто-то, кто вызывает bash от вашего имени, не задают оболочку входа в систему. Примеры этого - удаленное выполнение команды через ssh.
ssh для получения оболочки порождает оболочку входа в систему
$ ssh remotehost
ssh для вызова удаленной команды не порождает оболочку входа в систему
$ ssh remotehost remotecommand
Также см. Страницу руководства bash - опция norc, которая упоминает, что эта опция включена по умолчанию, если bash вызывается как sh. Раньше это было важно, но не так важно, теперь, когда ubuntu перешел на dash для sh вместо bash.