приглашение bash сбрасывалось каждый раз, когда я входил в систему

приглашение bash сбрасывалось каждый раз, когда я входил в систему

Я спросилэтот вопроснекоторое время назад о том, что shell не отображает путь. Недавно я обнаружил, что .bashrcне получает исходники (и это должно бытьобычная практика?). В настоящее время командная строка оболочки выглядит следующим образом:

-bash-4.3#

После выполнения source .bashrcя могу получить ожидаемую командную строку оболочки:

root@ubuntu2011:~#

где ubuntu2011имя машины. Как сделать так, чтобы приглашение выглядело так, как последнее, каждый раз при входе в систему?

ps .bashrcэто от:cp /etc/skel/.bashrc ~/.bashrc


ОБНОВЛЯТЬ: содержание ~/.profileследующее:

# ~/.profile: executed by Bourne-compatible login shells.

if [ "$BASH" ]; then
  if [ -f ~/.bashrc ]; then
    . ~/.bashrc
  fi
fi

mesg n

и echo $BASHвозвращается/bin/bash


ОБНОВЛЯТЬ: Ответы на вопросы @terdon:

  1. Как войти на сервер?

Я использую для входа в систему какssh [email protected]root

  1. Выполняются ли эти команды от имени пользователя root?

Да.


ОБНОВЛЯТЬ: Вывод ls -l ~/.{profile,bashrc,bash_profile,bash_login}:

ls: cannot access /root/.bash_login: No such file or directory
-rw-r--r-- 1 root root   63 Dec 24  2012 /root/.bash_profile
-rw-r--r-- 1 root root 3637 May 17 17:00 /root/.bashrc
-rw-r--r-- 1 root root  140 Apr 23  2010 /root/.profile

решение1

Это происходит, потому что вы входите в систему через ssh. Это сводится к различиям между оболочками входа и не входа. Когда вы подключаетесь через ssh, вы запускаете интерактивную оболочку входа. Как объяснено в man bash, этот тип оболочки будет:

Когда bash вызывается как интерактивная оболочка входа или как неинтерактивная оболочка с опцией --login, он сначала считывает и выполняет команды из файла /etc/profile, если этот файл существует. После считывания этого файла он ищет ~/.bash_profile, ~/.bash_login и ~/.profile в указанном порядке и считывает и выполняет команды из первой существующей и доступной для чтения. Опция --noprofile может использоваться при запуске оболочки для подавления этого поведения.

Другими словами, ~/.bashrcпо умолчанию игнорируется при запуске оболочек входа. Простое решение — явно указать его источник из одного из считываемых файлов. Как вы можете видеть выше, оболочки входа сначала попытаются прочитать ~/.bash_profile, и если он не существует ~/.bash_login, и если он также не существует, они читают ~/.profile. Поскольку у вас есть ~/.bash_profileфайл, вам нужно будет добавить в него эти строки:

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

решение2

Поместите это в ваш ~/.profile

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

Связанный контент