Tag Archives: bash

[翻译]这根本不是 BASH 的 bug!

在前几天看到 CVE-2014-6277 这个 BASH 的 bug 的时候,我就觉得挺奇葩的:这这种明显是有意实现的功能怎么会存在这么大的安全隐患呢?我不是专门搞安全的,同时觉得,这个 bug 可能虽然影响广泛,但并不是什么很有技术含量的利用思路。所以我就把这个事情放下没去想它。然而,随之而来的国内国外的各种媒体宣传、安全专家的联名建议、茶余饭后的坊间畅谈……对于 BASH 的这个 bug 无人不认为是个大 bug。不少人为此还在幸灾乐祸……但是我却没从各种评论中找到我的问题的答案。

但是,当我看到这篇随笔时,我不得不赞同作者的观点:这根本不是 BASH 的 bug!

所以我将原文翻译至此,希望能够带来一些思考。

也许我们今天看到的一个愚蠢的 bug,在历史上的某一天,是一个有意而为之的神奇特性。也许我们应该思考的不仅仅是这一刻的 bug 或者安全隐患本身,而是在软件项目这个极具工程和创作品双重特性的活动中,如何有效的保证某个特性不会变成 bug。所以什么规范了,文档了,可真得不是纸上谈兵!

不过话说回来,无论如何,我仍然坚信:“Less is exponentially more!(大道至简)”少一点 Feature 或许就是少一点 Bug 呢?

bug-vs-feature

Continue reading [翻译]这根本不是 BASH 的 bug!

让 shell 显示当前 git 的分支名称

早上测试脚本的时候,偶然在这篇文章《Git – setting up a remote repository and doing an initial push》看到一个关于 git 的好玩东西,记录于此。

根据文章的提示在 ~/.bashrc 里添加下面的内容,可以让提示符显示当前 git 的分支名称。我按照自己的习惯修改了提示符的格式。

<br />
__mikespook_ps1() {<br />
	local none='\[&#92;&#48;33[00m\]'<br />
	local g='\[&#92;&#48;33[0;32m\]'<br />
	local c='\[&#92;&#48;33[0;36m\]'<br />
	local emy='\[&#92;&#48;33[1;33m\]'<br />
	local br='\[&#92;&#48;33[1;41m\]'</p>
<p>	local uc=$none<br />
	local p='$'<br />
	if [ $UID -eq &quot;0&quot; ] ; then<br />
    	uc=$CBR<br />
		p='#'<br />
	fi<br />
	local u=&quot;${uc}${debian_chroot:+($debian_chroot)}\u${none}&quot;<br />
	local h=&quot;${c}\h${none}:${g}\w${none}&quot;<br />
	echo &quot;[email protected]$h\$(__git_ps1 '[${emy}%s${none}]')${uc}${p}${none} &quot;<br />
}</p>
<p>export PS1=$(__mikespook_ps1)<br />

这样,就能得到效果:

git-branch-show-in-prompt