Tag: 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

    (more…)

  • 让 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