~ / .bashrc не поддерживается автоматически в 12.04 лтс

Как сказано в в этом посте , ~/.bashrc автоматически создается на сервере Ubuntu 12.04 LTS, который я использую. Я не знаю, откуда он получил эту информацию, но, поскольку она еще не была отклонена, я считаю, что это правда.

Я использовал этот скрипт, чтобы проверить его источник:

if [ -f ~/.bashrc ]; then
   echo "Not sourced!";
fi

Только для информации: разрешения на данный момент 775, а владелец - я.

Так почему же мои ~/.bashrc не получены?

1
задан 23 May 2017 в 15:39

2 ответа

Как мы узнали, у вас нет файла .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

0
ответ дан 23 May 2017 в 15:39

Вы можете точно видеть, что выполняется, используя подробный режим 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.

0
ответ дан 23 May 2017 в 15:39

Другие вопросы по тегам:

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