Як зробити 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 - менше шансів щось помилково викрутити.
Lars Haugseth,

5
не кажучи вже про те, що "chsh" доступний, коли ви не можете написати в / etc / passwd
quack 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 на віддаленій машині породжує нову оболонку.
акіра


2

Увімкнути bash:

$ /bin/bash

Змінити оболонку для користувача:

$ sudo usermod -s /bin/bash username

де:

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

2
(1) Що ви розумієте під "enable bash"? (2) Користувач хоче змінити власну оболонку входу у віддалену систему. Чому ви вважаєте, що він має sudoдоступ до цієї системи? Чому ви надаєте інструкції щодо зміни оболонки для входу іншого користувача?
G-Man

Використання chsh (як було запропоновано вище) для мене не вийшло. Ця команда зробила!
Пер Ліндберг

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 у своєму введенні пароля, можливо, це запуск вашого терміналу.

Якщо ви намагаєтеся запустити термінал GUI, скажіть, що gnome-terminalви можете очікувати, що оболонка прочитає ваші файли запуску bash. Однак цього не відбувається за умовчанням Ubuntu та, можливо, інших систем.

Те, як я виправив це в Ubuntu, - це редагувати параметри gnome-terminal і встановити команду запуску bash -l. -lкороткий для --login. Це говорить bash до запуску як оболонки для входу, що змушує його завантажувати сценарії запуску, як ви отримуєте під час входу через ssh.

Я впевнений, що для цього є хороше обґрунтування, але я вважаю, що це дивно, і більше ніж трохи дратує, оскільки я ділюся тими ж профілями в системах Linux, cywgin та macos.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.