Как сделать Bash моей стандартной оболочкой в ​​Ubuntu?


101

У меня есть .bash_profileв моем домашнем каталоге, но он не запускается при входе в систему. Если я сделаю следующее, то все будет так, как я ожидаю:

ssh myhost
bash
source ~/.bash_profile

Но обычно это происходит при входе в систему. Мысли?


3
Также убедитесь, что у вас нет ~/.profileили ~/.bash_login, так как только один из трех источников. (Я забыл точный заказ.)
grawity

3
Почему у вас другой вопрос в заголовке и другой в теле вашего сообщения?
Пабук

Ответы:


170

Использование:

chsh

Введите свой пароль и укажите путь к оболочке, которую вы хотите использовать.

Для Баша это было бы /bin/bash. Для Zsh это было бы /usr/bin/zsh.


15
+1 - не уверен, почему ОП решил, что редактирование файла паролей было лучшим выбором, но это лучший ответ
kdgregory

1
Да, победили меня, это стандартный способ.
Джон Т

1
А в Ubuntu путь к оболочке, которую вы хотите использовать, это ... / bin / bash (и / bin / sh - не то же самое)
Harry Wood

49
Или вы можете использоватьsudo chsh -s /bin/bash username
Олег Васкевич

7
Вы должны выйти и снова войти, чтобы увидеть это изменение.
Нил Трафт

37

Помимо ответа Акиры, вы также можете отредактировать файл / etc / passwd, чтобы указать оболочку по умолчанию.

Вы найдете строку как этот пример:

john:x:1000:1000:john,,,:/home/john:/bin/sh

Оболочка указана в конце.


8
Лучше использовать команду 'chsh', как предложено akira - меньше шансов что-то испортить по ошибке.
Ларс Хаугсет

5
не говоря уже о том, что «chsh» доступен, когда вы не можете написать в / etc / passwd
quackote quixote

1
Но если у вас есть доступ к изменению /etc/passwdи вы осторожны, ответ Джона заключается в правильном использовании инструментов, предоставляемых системой.
AJP

3
Вы должны выйти и снова войти, чтобы увидеть это изменение.
Нил Трафт

2
Если вы используете сервер без пользовательских паролей - предоставляя доступ только через открытые / закрытые ssh-ключи ... это также имеет большой смысл. chsh требует пароль.
Кит Джон Хатчисон

4

Вы можете проверить свою терминальную программу. Возможно, он настроен для запуска / bin / sh, а не / bin / bash

Bash выполняет .bash_profile только для сеансов входа в систему. .bashrc выполняется для всех сеансов bash, а не только для сеансов входа в систему. Попробуйте получить .bash_profile из .bashrc (избегайте циклической зависимости!) Или настройте вашу терминальную программу для запуска / bin / bash -l в качестве программы оболочки.


2
Терминальная программа не имеет ничего общего с проблемой, потому что это sshd на удаленной машине, которая порождает новую оболочку.
Акира

3

Включить bash:

$ /bin/bash

Изменить оболочку для пользователя:

$ sudo usermod -s /bin/bash username

где:

  -s, --shell SHELL             new login shell for the user account

2
(1) Что вы подразумеваете под «включить bash»? (2) Пользователь хочет изменить свою собственную оболочку входа в систему в удаленной системе. Почему вы предполагаете, что он имеет sudoдоступ к этой системе? Почему вы предоставляете инструкции по изменению оболочки входа другого пользователя?
G-Man

Использование chsh (как предложено выше) не работает для меня. Эта команда сделала!
за Линдберга

2

Один из вариантов - переименовать скрипт запуска в .profile. Этот файл является источником большинства оболочек Unix .


1

Чтобы сделать любую оболочку по умолчанию, сначала убедитесь, что она установлена ​​и распознана на вашем компьютере, просмотрев содержимое /etc/shells:

$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/fish

Затем используйте chshдля изменения вашей оболочки:

$ sudo chsh -s /usr/bin/bash $(whoami) # or sudo chsh -s /bin/bash $(whoami)

Рекомендации

  1. https://linux.die.net/man/1/cat
  2. https://linux.die.net/man/1/whoami
  3. https://linux.die.net/man/5/shells
  4. https://linux.die.net/man/1/chsh

0

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

Если вы пытаетесь запустить терминал с графическим интерфейсом, возможно, gnome-terminalвы ожидаете, что оболочка прочитает ваши файлы запуска bash. Однако этого не происходит в Ubuntu и, возможно, в других системах по умолчанию.

Я исправил это в Ubuntu, отредактировав настройки терминала gnome и установив команду запуска на bash -l. -lэто сокращение от --login. Это указывает bash на запуск в качестве оболочки входа в систему, что заставляет его загружать сценарии запуска, которые вы получаете при входе через ssh.

Я уверен, что есть хорошая причина для того, чтобы быть таким, какой он есть, но я нахожу это удивительным и более чем раздражающим, поскольку я использую одни и те же профили в системах linux, cywgin и macos.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.