通过Homebrew升级Bash安全吗?


81

我是OS X的新手。我在MacBook Pro上运行OS X Lion。使用Homebrew升级bash shell是否安全:

$ brew install bash

如果安全,如何将其设置为通过Terminal运行的Shell的默认实例?

谢谢!


2
这个问题突然变得极为相关,请参阅Shellshock
ecnepsnai 2014年

是。10个字符
shrx

Answers:


105

/{,usr/}{,s}bin/通常不应使用中的二进制文件替换其他文件。其他程序希望它们是OS X附带的版本,并由OS升级取代。

运行之后brew install bash,可以通过以下方法安全地更改默认外壳:

  • 添加/usr/local/bin/bash/etc/shells
  • 运行中chsh -s /usr/local/bin/bash

终端或iTerm 2中的设置通常无需更改。它们都默认使用默认外壳的登录外壳打开新窗口。

也可以从“系统偏好设置”或使用dscl更改默认外壳程序,但是所有这三个选项都可以进行修改/var/db/dslocal/nodes/Default/users/$USER.plist


看起来很有效,如果遇到任何问题,回滚应该很容易!谢谢!
鲁迪

不知道那里有高级选项页面。甜!
lemonginger 2011年

2
需要进行一些编辑,/etc/shells以包括冲煮安装的bash。否则(至少在我的机器上)终端将拒绝启动。
brendanjerwin 2012年

2
在Mavericks 10.9.2上似乎不再需要第三个命令(csh -s)。
布伦特浮士德

2
我只需要brew install bash为此工作。(即无需修改/etc/shells
丹尼尔(Daniel

4

我在这里可能是错的,但是据我所知,brew它将安装它自己的实例bash,因为brew工作/usr/local/bin于系统默认值下/bin(和/usr/bin)下。

关于Terminal,您可以使用自己的自定义命令打开外壳。转到“首选项”>“启动”,然后选择“ Shells用以下命令打开:”(完整路径)。只需输入您的新人bash和vuala的道路!

希望能帮助到你!

顺便说一句:备份!在这种情况下的最佳建议!


哎,你知道吗,这个答案其实就像一个魅力
castiel

0

在执行任何操作之前,请先备份当前文件(当然,但始终值得一提)

sudo cp /bin/bash /bin/bash.3.2.bk

然后创建一个指向Homebrew下载的bash可执行文件的符号链接。我认为它将在/ usr / local / Cellar中,就像这样

sudo ln -s /usr/local/Cellar/bash/4.2.10/bin/bash /bin/bash

现在/ bin / bash指向usr / local目录中的文件


3
为系统版本添加新的Bash的缺点是,操作系统的任何更新都可能会擦除您的首选Shell。大概OP希望使用新功能,如果OS安装了bash的“比旧OS更新”但“比自定义旧”版本,这些新功能可能会中断。最好更改默认路径或更改用户外壳程序变量。
bmike

好吧,您可以创建一个新的simlink,因为它不会覆盖usr / local目录中的bash版本。但您是正确的,但以理的方法可能更好
lemonginger 2011年

噢-请编辑您的回答,然后将其放在第一位(并保留原始想法,如果您愿意作为第二种选择,我会更好,并且希望有机会扭转我的投票:-)
bmike

1
嗯,这就是我所说的,但是我进行了编辑,试图弄清楚每个步骤的效果要好一些。仍然认为,尽管收视率最高的答案可能更好:)
lemonginger 2011年

这似乎是更改系统外壳的一种非常危险的方法。
塞缪尔·米克尔·鲍尔斯

0

我认为只要启动就可以了

brew install bash

然后将其添加为默认外壳

chsh -s /usr/local/bin/bash

因为您只在修改当前用户。但是,我注意到我的默认〜/ .profile

if [ "/bin/bash" == $BASH ]; then
    source ~/.bashrc
fi

因此需要更新。我将其更改为

if [ "bash" == $(basename $BASH) ]; then
        source ~/.bashrc
fi

查看其他答案以了解chsh仅凭为什么还不够。同样,您更新后的.profile代码段看起来与原始代码段相同
nohillside

@patrix:感谢指出,我更新了第二个片段。如果brew install bash不需要任何进一步的措施,那就太好了。使用我共享的更新的配置文件,它没有。我希望这可以帮助其他人。
Gianluca Casati
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.