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 的分支名称。我按照自己的习惯修改了提示符的格式。

__mikespook_ps1() {
	local none='\[\033[00m\]'
	local g='\[\033[0;32m\]'
	local c='\[\033[0;36m\]'
	local emy='\[\033[1;33m\]'
	local br='\[\033[1;41m\]'

	local uc=$none
	local p='$'
	if [ $UID -eq "0" ] ; then
    	uc=$CBR 
		p='#'
	fi
	local u="${uc}${debian_chroot:+($debian_chroot)}\u${none}"
	local h="${c}\h${none}:${g}\w${none}"
	echo "$u@$h\$(__git_ps1 '[${emy}%s${none}]')${uc}${p}${none} "
}

export PS1=$(__mikespook_ps1)

这样,就能得到效果:

git-branch-show-in-prompt