当双击并在终端中运行时,Bash脚本会输出不同的输出

时间:2014-12-16 10:10:10

标签: bash

我有这个脚本(以及其他)在每次登录/午夜时生成我的壁纸。它有755个权限。部分代码:

#/bin/bash

convert -size 1440x900 xc:none wall.png
composite -gravity center ../pics/im256.png wall.png wall.png
composite -geometry 118x67+661+578 ../pics/im-title-white.png wall.png wall.png

TIME=`$HOME/bin/time.py | grep "\."`

if [[ $TIME == *\'* ]]
then
    # <...1...>
else
    # <...2...>
fi

如果我的$TIME变量中包含'个符号,我很感兴趣。当没有'符号时 - 一切都很好。

现在,当我知道至少有一个'符号(或者我可以强迫这样做)时,当我双击脚本时,我发现自己在else语句中,当我运行时终端中的脚本 - 我发现自己在then语句中。我想总是得到then陈述,但是如何?

我裁剪了失败的部分(左 - 正确,正确 - 错误):

correct image wrong picture

1 个答案:

答案 0 :(得分:3)

直到我发现shebang实际上并不是一个shebang,我才写了一篇文章。 #!/bin/bash解决了这个问题。

似乎不正确的shebang默认为/bin/sh无法正常运行。我的登录shell是/bin/bash,这意味着即使没有bash关键字也可以从shell运行,例如:./script.sh默认为bash而不是sh。为什么双击时不能这样做..