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

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

ssh myhost
bash
source ~/.bash_profile

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

9 ответов

Решение

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

chsh

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

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

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

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

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

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

Включить bash:

$ /bin/bash

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

$ sudo usermod -s /bin/bash username

где:

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

Если вы каким-то образом не видите свое имя пользователя в файле /etc/passwd [это тот случай, когда ваша система находится под контролем какого-либо другого домена, например, в ИТ-компаниях] Или оно говорит "пользователь не найден" с chsh Вариант, чем процесс ниже, может помочь вам.

Логика, лежащая в основе описанного ниже трюка -> В Ubuntu, /bin/sh - тире. Вы можете переключить свою систему на использование bash. В Ubuntu / bin / sh является символической ссылкой на dash. Вместо этого вы можете сделать это символической ссылкой на bash. Чтобы изменить это, запустите

sudo dpkg-reconfigure dash

И нажмите No, чтобы переключиться на bash.

Теперь перейдите в Терминал-> Редактировать-> Настройки-> Команда и установите флажок с оператором.

Запустите команду как оболочку входа

Вот и все.

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

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

Чтобы сделать любую оболочку по умолчанию, сначала убедитесь, что она установлена ​​и распознана на вашем компьютере, просмотрев содержимое /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

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

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

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

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

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

У меня была такая же ошибка, и приведенные выше ответы мне не помогли. По какой-то причине моя оболочка все еще загружалась, как только/bin/shвместо/bin/bashи у меня есть команда, как и должно быть в Ubuntu 16.04, но у меня также есть пустой файл, который, похоже, читается вместо .

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

Итак, я бы сказал, если у вас есть все три файла:.bashrc, ,.profileубедитесь, что ваш.bash_profileВ файле есть данные, которые вы хотите загрузить при входе в среду оболочки.

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