Gedit の External Tools が変だ。
何故コマンドが改行されているのだ?
head コマンドの挙動が変わってしまったのだろうか。
一時間くらいすったもんだしてやっと理由が判明。
何故か改行コードが CRLF になっていたからだった。
head -n1 は LF までを戻すので直前の CR は残ってしまうみたい。
てか bash が CR を改行と認識すると初めて知った。
CR を使うなですむ話だけど、一応対策。
#!/bin/sh
# Do shebang
#h=`head -n1 $GEDIT_CURRENT_DOCUMENT_PATH`
# Remove CR
h=`head -n1 $GEDIT_CURRENT_DOCUMENT_PATH | tr -d '\r'`
if [[ $h = \#\!* ]]; then
    app=${h#*\!}
    echo $app $GEDIT_CURRENT_DOCUMENT_PATH
    $app $GEDIT_CURRENT_DOCUMENT_PATH
fi
で
普段はまったく無意味な処理なんだけどね。

