如何让Bash成为Ubuntu上的默认shell?
我在我的主目录中有一个.bash_profile
,但它在登录时没有被运行。如果我做以下操作,那么事情似乎和我期望的一样:
ssh myhost
bash
source ~/.bash_profile
但通常这一切都发生在登录时。有什么想法?
我在我的主目录中有一个.bash_profile
,但它在登录时没有被运行。如果我做以下操作,那么事情似乎和我期望的一样:
ssh myhost
bash
source ~/.bash_profile
但通常这一切都发生在登录时。有什么想法?
除了akira的回答,你也可以编辑你的 /etc/passwd 文件来指定你的默认shell。
你会发现有这样一行:
john:x:1000:1000:john,,,:/home/john:/bin/sh
shell是在最后指定的。
你可以检查一下你的终端程序。它可能被配置为运行/bin/sh而不是/bin/bash
Bash只在登录会话中执行.bash/profile。.bashrc是为所有bash会话执行的,而不仅仅是登录会话。试着从.bashrc中获取.bash_profile (避免循环依赖!)或者配置你的终端程序作为shell程序运行/bin/bash -l。
如果你在/etc/passwd文件中看不到你的用户名[当你的系统由其他域控制时,例如在IT公司,这种情况就会出现],或者它显示 “未找到用户",并带有chsh
选项,下面的过程可能会帮助你。
下面的技巧背后的逻辑 -> 在Ubuntu上,/bin/sh是dash。你可以把你的系统切换到使用bash。在Ubuntu上,/bin/sh是dash的符号链接。要改变它,运行
sudo dpkg-reconfigure dash
然后按No切换到bash。
现在,进入终端-/>编辑-/>首选项-/>命令,然后勾选语句
以登录shell身份运行命令
就这样。
要使任何 shell 成为你的默认值,首先通过查看 /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
改变你的shell:
$ sudo chsh -s /usr/bin/bash $(whoami) # or sudo chsh -s /bin/bash $(whoami)
你的问题中没有足够的信息让我确定,但我以前也遇到过同样的问题。假设你已经在你的密码输入中设置了/bin/bash,可能是你的终端启动方式的问题。
如果你试图启动一个GUI终端,比如gnome-terminal
你可能希望shell能读取你的bash启动文件。然而,这在Ubuntu上不会发生,也许其他系统默认情况下也不会。
我在Ubuntu上解决这个问题的方法是编辑gnome-terminal偏好设置,并将启动命令设置为bash -l
。-l
是--login
的缩写。这告诉bash以登录shell的方式启动,这将导致它加载启动脚本,就像你通过ssh登录时一样。
我相信这样做有一个很好的理由,但我发现这很令人惊讶,而且我在linux、cywgin和macos系统中共享相同的配置文件,所以我觉得很烦。