Làm cách nào để biến Bash thành shell mặc định của tôi trên Ubuntu?


101

Tôi có một .bash_profiletrong thư mục nhà của tôi, nhưng nó không được chạy khi đăng nhập. Nếu tôi làm như sau, thì mọi thứ dường như đúng như tôi mong đợi:

ssh myhost
bash
source ~/.bash_profile

Nhưng thông thường tất cả xảy ra khi đăng nhập. Suy nghĩ?


3
Ngoài ra, hãy đảm bảo rằng bạn không có ~/.profilehoặc ~/.bash_login, vì chỉ một trong ba là có nguồn gốc. (Tôi đã quên thứ tự chính xác.)
grawity

3
Tại sao bạn có một câu hỏi khác nhau trong tiêu đề và câu hỏi khác nhau trong nội dung bài đăng của bạn?
pabouk

Câu trả lời:


170

Sử dụng:

chsh

Nhập mật khẩu của bạn và nêu đường dẫn đến trình bao bạn muốn sử dụng.

Đối với Bash đó sẽ là /bin/bash. Đối với Zsh đó sẽ là /usr/bin/zsh.


15
+1 - không chắc tại sao OP quyết định chỉnh sửa tệp mật khẩu là lựa chọn tốt hơn, nhưng đây là câu trả lời tốt nhất
kdgregory

1
Vâng đánh bại tôi với nó, đây là cách tiêu chuẩn.
John T

1
Và trên Ubuntu, đường dẫn đến trình bao bạn muốn sử dụng là ... / bin / bash (và / bin / sh không giống nhau)
Harry Wood

49
Hoặc bạn có thể sử dụngsudo chsh -s /bin/bash username
Oleg Vaskevich

7
Bạn phải đăng xuất và đăng nhập lại để xem sự thay đổi này.
Neil Traft

37

Ngoài câu trả lời của akira, bạn cũng có thể chỉnh sửa tệp / etc / passwd để chỉ định shell mặc định của mình.

Bạn sẽ tìm thấy một dòng như ví dụ này:

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

Vỏ được chỉ định ở cuối.


8
Tốt hơn là sử dụng lệnh 'chsh' theo đề xuất của akira - ít có cơ hội làm hỏng điều gì đó do nhầm lẫn.
Lars Haugseth

5
không đề cập đến 'chsh' khả dụng khi bạn không thể viết thư cho / etc / passwd
quack quixote

1
Nhưng nếu bạn có quyền truy cập để sửa đổi /etc/passwdvà bạn cẩn thận, câu trả lời của John là sử dụng tốt các công cụ mà hệ thống cung cấp.
AJP

3
Bạn phải đăng xuất và đăng nhập lại để xem sự thay đổi này.
Neil Traft

2
Nếu bạn đang chạy một máy chủ không có mật khẩu người dùng - chỉ cung cấp quyền truy cập thông qua các khóa ssh công khai / riêng tư ... thì điều đó cũng rất có ý nghĩa. chsh yêu cầu mật khẩu.
Keith John Hutchison

4

Bạn có thể kiểm tra chương trình thiết bị đầu cuối của bạn. Nó có thể được cấu hình để chạy / bin / sh thay vì / bin / bash

Bash chỉ thực thi .bash_profile cho các phiên đăng nhập. .bashrc được thực thi cho tất cả các phiên bash, không chỉ các phiên đăng nhập. Hãy thử tìm nguồn .bash_profile từ .bashrc (tránh phụ thuộc vòng tròn!) Hoặc định cấu hình chương trình đầu cuối của bạn để chạy / bin / bash -l dưới dạng chương trình shell.


2
chương trình đầu cuối không liên quan gì đến vấn đề vì nó là sshd trên máy từ xa, tạo ra lớp vỏ mới.
akira

2

Một cách khác là đổi tên tập lệnh khởi động của bạn thành .profile. Tập tin này đang được nguồn bởi hầu hết các shell Unix .


2

Kích hoạt tính năng bash:

$ /bin/bash

Thay đổi vỏ cho người dùng:

$ sudo usermod -s /bin/bash username

Ở đâu:

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

2
(1) Ý của bạn là gì khi kích hoạt bash Hay? (2) Người dùng muốn thay đổi vỏ đăng nhập của riêng mình trên một hệ thống từ xa. Tại sao bạn cho rằng anh ta có sudoquyền truy cập vào hệ thống đó? Tại sao bạn cung cấp hướng dẫn về việc thay đổi vỏ đăng nhập của người dùng khác?
G-Man

Sử dụng chsh (như đề xuất ở trên) không hiệu quả với tôi. Lệnh này đã làm!
Per Lindberg

1

Để đặt bất kỳ shell nào thành mặc định của bạn, trước tiên hãy xác minh nó được cài đặt và nhận dạng trên máy tính của bạn bằng cách xem nội dung của /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

Sau đó sử dụng chshđể thay đổi vỏ của bạn:

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

Người giới thiệu

  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

Chắc chắn không có đủ thông tin trong câu hỏi của bạn để tôi nói, nhưng tôi đã gặp vấn đề tương tự trước đây. Giả sử bạn đã đặt / bin / bash trong mục nhập mật khẩu của mình, đó có thể là cách thiết bị đầu cuối của bạn khởi chạy.

Nếu bạn đang cố gắng khởi chạy một thiết bị đầu cuối GUI, giả sử gnome-terminalbạn có thể mong đợi trình bao đọc các tệp khởi động bash của bạn. Tuy nhiên, điều này không xảy ra trên Ubuntu và có thể các hệ thống khác theo mặc định.

Cách tôi đã sửa nó trên Ubuntu là chỉnh sửa các tùy chọn gnome-terminal và đặt lệnh khởi động thành bash -l. -llà chữ viết tắt --login. Điều này cho bash khởi động như là vỏ đăng nhập, điều này khiến nó tải các tập lệnh khởi động như bạn nhận được khi đăng nhập qua ssh.

Tôi chắc chắn có một lý do hợp lý cho việc này, nhưng tôi thấy nó đáng ngạc nhiên và hơi khó chịu khi tôi chia sẻ cùng một hồ sơ trên các hệ thống linux, cywgin và macos.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.