如何将fish设置为默认shell?

Xod*_*rap 140 command-line fish

有没有办法在ubuntu上网本混音中将fish设置为默认shell?我放入了我的 .bashrc 来运行 fish,它工作正常,但是 ubuntu 将它识别为在 bash 中运行的 fish,这意味着当我尝试关闭 shell 时它会警告我一个任务仍在运行。

它不会作为新应用程序弹出,因此我无法像普通应用程序一样将其固定在我的栏中。

ajm*_*tch 200

您可以通过运行将fish设置为默认shell

chsh -s `which fish`
Run Code Online (Sandbox Code Playgroud)

要为其他用户执行此操作,只需在命令末尾添加用户名,然后使用sudo.

然后注销并重新登录。

(要将其重新设置为bash,您当然需要使用 Fish 语法,如下所示chsh -s (which bash)

  • 您可能需要注销并重新登录 - 我只是在干净的虚拟机上尝试过它并且它有效。 (20认同)
  • 不要意外地使用 `sudo` 运行这个命令,否则你将更改 root shell。 (8认同)
  • 或者从鱼里面的`chsh -s (which fish)`。 (7认同)
  • 这似乎对我不起作用。它没有给出错误,但它似乎不起作用,即使我只是打开一个新标签。有什么想法吗? (3认同)

swe*_*tfa 34

usermod -s /usr/bin/fish username
Run Code Online (Sandbox Code Playgroud)

但是必须以 root 身份运行。

这将永久更改指定用户的外壳。


KD1*_*100 24

我只是将这一行添加fish到我的.bashrc.

  • 抱歉,但效率不高。:) 它将加载您的鱼壳,但在您的 bash 运行之上。 (12认同)
  • 乍一看,这似乎是一个肮脏的黑客行为,但在使用我的电脑并将 Fish 设置为默认 shell 和 chsh 一段时间后,我又回到了这个解决方案。有些程序假设您正在使用 bash,并且会因为在 Fish 上使用 bash 语法而崩溃。到目前为止我在i3wm和matlab中遇到了这样的问题。 (4认同)
  • 为什么 bash 需要高效?@M.JunaidSalaat (3认同)

jac*_*avo 19

我同意chsh是正确答案。然而:

如果你运行chsh并得到错误

/usr/local/bin/fish: non-standard shell
Run Code Online (Sandbox Code Playgroud)

只需将鱼的二进制位置添加到/etc/shells.

这里找到。


Dor*_*ian 7

/etc/shells,添加/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
Run Code Online (Sandbox Code Playgroud)

然后chsh -s /usr/local/bin/fish