Làm cách nào để đặt cá làm vỏ mặc định?


110

Có cách nào để đặt cá làm vỏ mặc định trong bản phối lại netbook ub Ubuntu không? Tôi đã đặt .bashrc của mình để chạy cá, nó hoạt động tốt, nhưng ubfox nhận ra đó là cá chạy trong bash, điều đó có nghĩa là khi tôi cố gắng đóng vỏ, nó cảnh báo tôi rằng một tác vụ vẫn đang chạy.

Nó không bật lên như một ứng dụng mới, vì vậy tôi không thể ghim nó vào thanh của mình như một ứng dụng thông thường.


2
Từ Câu hỏi thường gặp chính thức: Làm cách nào để biến cá thành vỏ mặc định của tôi?
Dennis

Câu trả lời:


151

Bạn có thể đặt cá làm vỏ mặc định bằng cách chạy

chsh -s `which fish`

Để làm như vậy cho người dùng khác, chỉ cần thêm tên người dùng vào cuối lệnh và sử dụng sudo.

Sau đó đăng xuất và đăng nhập lại.

(Để đặt nó trở lại bash, tất nhiên bạn cần sử dụng cú pháp Fish, như thế này chsh -s (which bash))


3
Điều này dường như không làm việc cho tôi. Nó không báo lỗi, nhưng có vẻ như nó không hoạt động, ngay cả khi tôi chỉ mở một tab mới. Có suy nghĩ gì không?
Xodarap

16
Bạn có thể phải đăng xuất và đăng nhập lại - Tôi vừa thử nó trên một máy ảo sạch và nó đã hoạt động.
ajmitch

1
Làm thế nào để bạn thiết lập lại?
knutole

7
Đừng vô tình chạy lệnh này với sudohoặc bạn sẽ thay đổi vỏ gốc thay thế.
Stephen Niedzielski

2
Hoặc chsh -s (which fish)từ bên trong cá.
Wtower

30
usermod -s /usr/bin/fish username

Phải được chạy như root mặc dù.

Điều này sẽ thay đổi vỏ vĩnh viễn cho người dùng được chỉ định.


1
Tôi biết đó không phải là Ubuntu, nhưng tôi muốn bình luận: Tôi đã sử dụng CentOS và tôi đã gặp Authentication Failedlỗi khi cố gắng thay đổi trình bao với người dùng không phải root và sau khi tìm kiếm rộng rãi để thử và tìm hiểu, đây là điều duy nhất đã làm việc Cảm ơn!
CWSpear

Vâng, nó sẽ hoạt động trên hầu hết các hương vị unix có usermod và cá để lấy vỏ, hoặc thay đổi vỏ thành bất kỳ hương vị nào bạn muốn
sweetfa 11/11/13

Tôi đã làm điều đó và bây giờ thiết bị đầu cuối không bắt đầu nữa. Tôi nhận được "Có lỗi khi tạo quy trình con cho thiết bị đầu cuối này", "Không thể thực hiện quy trình con" / usr / bin / fish "(Lỗi đầu vào / đầu ra)". Làm thế nào tôi có thể hoàn tác điều đó?
ptkato

Ban hành lệnh tương tự như root nhưng sử dụng bash thay vì fish làm shell.
sweetfa

21

Tôi chỉ cần thêm dòng fishvào cuối của tôi .bashrc.


1
Đó là giải pháp đơn giản và tốt nhất, IMO;)
Ben Marten

9
Xin lỗi, nhưng nó không hiệu quả. :) Nó sẽ tải vỏ cá của bạn nhưng trên bash của bạn đang chạy.
M. Junaid Salaat 17/03/2017

1
Tại sao bash cần phải hiệu quả? @ M.JunaidSalaat
codenamejames

Ngay từ cái nhìn đầu tiên, nó có vẻ như là một bản hack bẩn, nhưng sau một thời gian sử dụng máy tính của tôi với cá được đặt làm vỏ mặc định với chsh tôi đã quay lại giải pháp này. Một số chương trình cho rằng bạn đang sử dụng bash và sẽ gặp sự cố do sử dụng cú pháp bash trên cá. Cho đến nay tôi đã phải đối mặt với những vấn đề như vậy trong i3wm và matlab.
Naheel

@codenamejames: Không phải bash cần phải hiệu quả hay vài mili giây đó, nhưng đó là trường hợp không có gì để mất, vậy tại sao bạn không làm đúng? Đặc biệt ở đây, nơi chúng tôi đang đưa ra lời khuyên cho người khác. Chúng ta nên biết rõ hơn
swalog

13

Tôi đồng ý với chshcâu trả lời là chính xác. Tuy nhiên:

Nếu bạn chạy chshvà gặp lỗi

/usr/local/bin/fish: non-standard shell

chỉ cần thêm vị trí nhị phân cá vào /etc/shells.

Tìm thấy ở đây .


Điều này là cần thiết để làm trên macOS Mojave.
Dodekeract

2

Trong /etc/shells, thêm /usr/local/bin/fish:

# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/fish

Sau đó chsh -s /usr/local/bin/fish.

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.