如何从未知的shell切换到bash?


41

令我感到惊讶的是,我还没有在网站上找到这个问题。因此,今天$是我以新用户身份登录后出现的。这是意外的,因为主要用户的提示以开头username@computername:~$

那么,如何从另一个shell切换到bash?


8
仅仅因为$出现而不是username@computername:~$并不意味着它不是扑朔迷离。提示的确切格式由PS1变量设置,可以针对不同用户进行不同的设置或自定义。
frabjous

3
@mouche回复:@frabjous echo $SHELL找出您当前的shell是什么。
xenoterracide

1
@mouche @frabjous并以$开头对于bash实际上是常见的,一些非bash shell(如zsh)使用%的开箱即用,我相信其他shell使用其他东西。
xenoterracide

1
@mouche /bin/sh通常并不意味着通常是与其他事物的符号链接。我键入ls -l /bin/sh以查看它是一个符号链接。在某些情况下,作为某事物的符号链接会改变其行为,我不认为bash就是那样。
xenoterracide

3
@xenoterracide-使用bashas /bin/sh 会禁用许多bash功能(进入POSIX兼容模式)。
克里斯·

Answers:


61

假设未知的shell支持运行绝对命令,则可以尝试: /bin/bash

要更改默认外壳,我将使用chsh(1)。用法示例:chsh -s /bin/bash $USER


1
chsh会永久更改外壳程序还是仅更改当前会话?
mouche 2010年

10
@mouche永久;它会改变您的输入/etc/passwd
迈克尔·莫罗切克

@mouche,chsh(1)将仅允许更改为列出的外壳/etc/shells(大概可用)。chsh -l列出了替代方案。请注意,有些nologin帐户(例如)是为永远不应该用于登录(锁定自己的好方法)的帐户定义的,可能会有一些特殊用途的本地添加。
冯布兰德'16

19

您输入bash。如果要永久保留,请/bin/bash通过编辑将默认外壳程序更改为/etc/passwd

这是我的一些摘要/etc/passwd

avahi:x:84:84:Avahi daemon:/:/bin/false
xenoterracide:x:1000:100::/home/xenoterracide:/bin/zsh
postgres:x:88:88::/var/lib/postgres:/bin/zsh
bob:x:1001:1001::/home/bob:/bin/bash
usbmux:x:140:140:usbmux user:/:/sbin/nologin

最后一个字段包含外壳程序,将最后:一个字段后的字段修改为有效或无效的外壳程序将起作用。/bin/false/sbin/nologin它们的含义用户没有一个真正的登录shell,但如果PAM是没有树立正确的,这并不意味着他们无法登陆(我报Arch Linux的这个错误,因为你可以图形化界面登录,而无需登录外壳)。/bin/bash并且/bin/zsh都是有效的外壳程序,请参见/etc/shells以获取系统上有效外壳程序的列表。/etc/shells如果您有兴趣,这是我的。

/bin/sh
/bin/bash
/bin/ksh
/bin/zsh
/bin/dash

是的,您可以使用chshusermod做同样的事情,请记住这些只是结构化的文本文件和TIMTOWTDI。


11
您可能想要使用chsh而不是手动编辑passwd
Michael Mrozek

@Michael大约有5种(POOMA)不同的方式来更改外壳/etc/passwd,因为我不想列出其中任何一种,因为我总是手动进行操作。chsh和usermod都可以做到。
xenoterracide

与配置文件打交道是一个Bad Idea(TM),错误可能会使系统无法使用。是的,这通常是唯一/最快的方法,但是请格外小心
冯布兰德'16

12

如果chsh或手动编辑配置不起作用,但是在登录时执行了〜/ .profile脚本,请添加以下行:

exec /bin/bash --login

环顾了一会后,这就是我需要的解决方案。谢谢!
PearsonArtPhoto

好主意,特别是如果外壳程序选择了在启动时
归档的

touch ~/.bash_profile否则bash会在循环中执行自身:bash需要~/.profile~/.bash_profile不存在的情况下执行。
har-wradim
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.