BASH_VERSION не установлен и .bashrc не получен в интерактивной оболочке

Я создал нового пользователя, выполнив

sudo useradd -m harry

Когда я пытаюсь заменить пользователя на «su - harry», то все, что я вижу, это «$» (доллар ), автозаполнение не работает и встроенные функции оболочки (например, источник) недоступны.

Я проверил .bashrc и .profile и обнаружил, что .bashrc не получает источник, потому что $ BASH_VERSION не установлен.

Код внутри .profile выглядит следующим образом:

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

Команда echo $BASH_VERSION ничего не возвращает.

$ echo $BASH_VERSION

$ 

Встроенные оболочки (source .bashrc, .bashrc) тоже не работают.

Значение переменной SHELL было '/ bin / sh', что является псевдонимом тире. Я изменил его на / bin / bash (экспорт SHELL = / bin / bash), но он не дал никаких эффектов.

Когда я жестко кодирую «.bashrc» в .profile (конечно, просто чтобы проверить, будет ли он работать), я получаю несколько ошибок:

admin@host:~$ sudo su - harry
-su: 13: /home/harry/.bashrc: shopt: not found
-su: 21: /home/harry/.bashrc: shopt: not found
-su: 105: /home/harry/.bashrc: shopt: not found
-su: 28: /etc/bash_completion: [[: not found
-su: 34: /etc/bash_completion: [[: not found
-su: 51: /etc/bash_completion: Bad substitution
\[\e]0;\u@\h: \w\a\]\u@\h:\w$ 

Есть идеи, как это исправить?

Спасибо заранее. jepetko

3
задан 8 December 2013 в 23:34

2 ответа

Оболочка этого пользователя - /bin/sh. Это меньшая оболочка, которая использует меньше ресурсов, чем bash, но предлагает меньше функций программирования и почти не имеет интерактивных функций.

Запустите sudo chsh -s /bin/bash harry, чтобы изменить оболочку входа пользователя на bash. Это меняет запись пользователя в /etc/passwd (не редактируйте этот файл напрямую, если вы не знаете, что делаете).

Установка переменной среды SHELL указывает приложениям запускать другую оболочку, но не влияет на текущую оболочку.

0
ответ дан 8 December 2013 в 23:34

Если вы хотите создать пользователя с оболочкой bash по умолчанию, используйте эту команду:

useradd -m -s /bin/bash <userName>

Замените <userName> именем пользователя, которого вы хотите создать.

0
ответ дан 8 December 2013 в 23:34

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

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