BASH 和/或 .BASHRC 在 SU 或 SSH 登录后无法正常工作,除非运行“bash”命令
Posted
技术标签:
【中文标题】BASH 和/或 .BASHRC 在 SU 或 SSH 登录后无法正常工作,除非运行“bash”命令【英文标题】:BASH and/or .BASHRC not working properly after SU or SSH login unless run "bash" command 【发布时间】:2012-01-26 07:22:00 【问题描述】:我有一台运行 Ubuntu 10.04 的 Amazon EC2 机器。
默认用户 ubuntu 的 .bashrc
似乎表现正常,但如果我将 ssh
或 su
发送给第二个用户 mikey,它在运行 bash
之前无法正常显示:
Ex 1.) 使用su
更改用户
mikey@home ~$ ssh ubuntu@EC2
ubuntu@EC2:~$
ubuntu@EC2:~$ su mikey
$
$ bash
mikey@EC2: $
Ex 2.) 直接以用户身份登录 SSH
mikey@home ~$ ssh mikey@EC2
/home/mikey/.bashrc: 13: shopt: not found
/home/mikey/.bashrc: 21: shopt: not found
/home/mikey/.bashrc: 99: shopt: not found
/etc/bash_completion: 33: [[: not found
/etc/bash_completion: 39: [[: not found
/etc/bash_completion: 52: Bad substitution
\[\e]0;\u@\h: \w\a\]\u@\h:\w$
\[\e]0;\u@\h: \w\a\]\u@\h:\w$ bash
mikey@EC2:~$
我尝试过使用~/.profile
和~/.bash_login
来包含
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
但到目前为止,似乎没有任何效果。
任何指针将不胜感激。谢谢!
【问题讨论】:
你能在非工作的 shell 中echo $SHELL
吗?它可能不是bash
。
谢谢,您说的完全正确。 [\e]0;\u@\h: \w\a]\u@\h:\w$ echo $SHELL /bin/sh 现在谷歌搜索看看如何改变它,但任何指针都将不胜感激。 :)
下面是一个使用usermod
的例子。
你就是那个男人。编辑 /etc/passwd 以将 mikey 用户指向 /bin/bash 似乎可以解决问题。
【参考方案1】:
如果实际上你的 shell 不是bash
,你可以尝试像这样改变它:
usermod -s /bin/bash mikey
如果 /bin/bash 是该系统上bash
的位置。
【讨论】:
【参考方案2】:我认为您的默认 shell 是 dash
或 sh
而不是 bash
在这种情况下。 echo $SHELL
应该显示它,如果它显示 /bin/sh
,它可能是一个链接,因此请检查 ls -l /bin/sh
是否链接到其他 shell。
【讨论】:
【参考方案3】:你不能用chsh
来换壳吗?而不是破解 /etc/passwd?
【讨论】:
【参考方案4】:要永久修复此问题,请更改 /etc/passwd
发件人:
kwilson:x:3042:3042::/home/jjson:/bin/sh
改成:
kwilson:x:3042:3042::/home/jjson:/bin/bash
【讨论】:
你应该使用chsh
或 usemod
来做这个。以上是关于BASH 和/或 .BASHRC 在 SU 或 SSH 登录后无法正常工作,除非运行“bash”命令的主要内容,如果未能解决你的问题,请参考以下文章
VSCode 集成终端不加载 .bashrc 或 .bash_profile
OpenSuse linux 上的 .bashrc 或 .bash_profile 在哪里?
Julia和Bash - Julia的shell模式不执行〜/ .bash_profile(或〜/ .bashrc)
sh 一个bash函数添加到〜/ .bash_profile(或〜/ .bashrc或其他)