Gedit の External Tools が変だ。
何故コマンドが改行されているのだ?
head コマンドの挙動が変わってしまったのだろうか。
一時間くらいすったもんだしてやっと理由が判明。
何故か改行コードが CRLF になっていたからだった。
head -n1 は LF までを戻すので直前の CR は残ってしまうみたい。
てか bash が CR を改行と認識すると初めて知った。
CR を使うなですむ話だけど、一応対策。
1 2 3 4 5 6 7 8 9 10 11 12 | #!/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 |
で
普段はまったく無意味な処理なんだけどね。