有什么理由不把root shell改成bash?


0

root的默认shell(至少在Yosemite上)是 /bin/sh。将它更改为bash(或更好的zsh)会有任何问题吗?至于我知道bash至少是向后兼容的。

我需要一个更健壮的shell来运行这样的东西 iTerm的shell集成


你是如何成为root用户的。我用这个命令 sudo bash
David Anderson

要么 sudo -s (使用的值 $SHELL 生成根shell)
nohillside

在回答这个问题之后,我发现很难看出强大的shell与实际问题有什么关系。这是假设还是您面临特定错误?
bmike

如果您正在寻求帮助以实现iTerm shell集成 sh (因为你现在得到一个 Your shell, /bin/sh, is not supported yet. Only tcsh, zsh, bash, and fish are supported. Sorry! 在按照iTerm网站上的说明时出错),请为此提出一个新问题(或考虑分析curl'ed脚本的代码并对其进行修改 sh 运行root shell的入门考试:-))。
nohillside

1
@patrix钉了它 - 问:“我什么时候准备好root shell?”答:你会知道什么时候到来。
bmike

Answers:


1

shell的路径是我能看到的唯一重大差异 shbash - 如果你仔细看看OS X上的/ bin / sh,它真的是bash(可能用一个标志编译,让它知道它填充了sh,因为二进制文件略有不同)。

mac me$ md5 /bin/sh /bin/bash
MD5 (/bin/sh) = 2cc3c26641112c1bd0173f396b7d7662
MD5 (/bin/bash) = 5d7583d80e5314ac844eedc6d68c6cd7
mac me $ ls -l /bin/sh /bin/bash
-r-xr-xr-x  1 root  wheel  628496 Aug 28 02:02 /bin/bash
-r-xr-xr-x  1 root  wheel  632672 Aug 28 02:02 /bin/sh
mac me $ sh --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)
Copyright (C) 2007 Free Software Foundation, Inc.
manoa mac me $ bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)
Copyright (C) 2007 Free Software Foundation, Inc.

所以,如果iTerm正在/ bin / sh上进行barfing,即使它已经是bash,你也可以改变shell。我会说用你的用户运行东西 sudo -H 总是比启用root更好,但这是另一个线程的讨论:

如果要测试更改:


1
您可能对结果感兴趣 echo $SHELLOPTS 之间 shbash,也 shopt。两者之间最大的区别是调用rc文件。
fd0

好吧@ fd0说 - shopt 和$ SHELLOPTS对于解决脚本的可移植性等实际问题至关重要。我担心我已经在兔子洞的距离太远,因为有关于使用一个工具检查的问题。
bmike
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.