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
で
普段はまったく無意味な処理なんだけどね。