2014年8月23日土曜日

[cygwin] 改行コードにCR+LFが用いられているスクリプトを実行する手順

キャリッジリターン(CR, コードは0x0d)が改行コードとして用いられているスクリプトファイルをcygwin上で実行しようとすると、以下のようなエラーになります。

./configure: line 16: $'\r': コマンドが見つかりません


ネット上で解決方法を探してみたところ、.bashrcで以下の設定をしておけばよいとのこと。

export SHELLOPTS
set -o igncr


ところが自分のcygwin環境ではシェルにtcshを用いているために、上記の対応では問題を解決できませんでした。tcsh上でファイル先頭に

#!/bin/sh

が記載された、bash/shのスクリプトを起動したタイミングではホームディレクトリの.bashrcはロードしてくれないようです。/etc/bash.bashrc, ~/.startxwinrcに設定をいれてみても状況は改善せず…。
最終的に/etc/profileにSHELLOPTSの設定を入れることで、意図した動作になりました。

参考

0 件のコメント:

コメントを投稿