• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CygwinでNo such file or directory!?)

CygwinでNo such file or directory!?

このQ&Aのポイント
  • Cygwin上でzshスクリプトを実行する際に「#!/usr/bin/zsh: No such file or directory」と表示される現象の解決方法を探しています。Windows7にCygwinをインストールし、zshを動作させる設定を行った後、スクリプトを実行した結果、エラーメッセージが表示されます。
  • スクリプトは動作しているが、気持ち悪い結果になってしまう。Cygwinプロンプト上で「which zsh」と実行すると正しいパスが返ってくるが、エラーメッセージには「No such file or directory」と表示される。Windows7の環境変数「path」にはCygwinのbinディレクトリパスが追加されている。
  • 問題の解決方法を教えていただきたい。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

ダンプ結果ではっきりしました。ご協力、ありがとうございます > 357 273 277 これらは8進数なので、16進数に変換すると 0xef 0xbb 0xbf になり、UTF-8でのBOMになります。 エディタ等では、BOMを使って文字コードの判定/画面には非表示、と動作しますが、シェルではそのような事はしないで、ファイルの先頭から実行しようとします。(シュルはBOM等ない昔からあるものですから) そのため、BOMを命令として実行しようとしたたため「No such file or directory」となったものです。 「?」はBOMを文字としてを表示しようとして文字化け(?)した結果です。 普通はみつからなかったら > /home/Admin/bin/busicpy_usb: line 1: /usr/bin/zsh: No such file or directory という感じに line X: の後にすぐコマンドがきます。 対処方法として ・BOMを削除する→下記URL等を参考に ・保存時の設定を変更するか、エディタそのものを別の物を使うかして、BOMが付かないようにする があります。

参考URL:
http://ja.wikipedia.org/wiki/UTF-8, http://www.sbirobo.com/2007/12/remove-bom-from-utf8-document.html
kamuycikap
質問者

お礼

回答ありがとうございました。 ものすごくすっきりしました。 私はxyzzyをエディタとして利用しており、ファイルをUTF-8として保存しておりました。 Linux側から持ってきたファイルがUTF-8(Emacs23で作成)でしたので、Windows側でも同じように保存していたのですが、BOMを付けずに保存するには「UTF-8N」で保存する必要があると理解しました。 シェルの方が歴史が古いので、結果としては当たり前ですね。 大変勉強になりました。 ありがとうございました。 参考にしたサイトは下記のとおりです。 http://www.esrij.com/support/arcexplorer/document/ax_about_utf8n.html

その他の回答 (2)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

> /home/Admin/bin/busicpy_usb: line 1: ?#!/usr/bin/zsh: No such file or directory この、#!の前にある「?」が気になります。 もしかして、BOM付きで保存されている、とかいうことはないでしょうか? od -c そのスクリプト としてバイナリダンプをとって、1byte目が # になっているか、それともなにか違う文字になっているか、確認してみてください。

参考URL:
http://e-words.jp/w/BOM.html
kamuycikap
質問者

お礼

回答ありがとうございます。 ダンプしてみたところこんな感じです。 ファイルは「UTF-8」で、改行は「LF」としております。 最初の357 273 277が怪しいのでしょうか?? いまいち意味が分かってないのですが。。。。なにか気づくことをご教示願います。 HITACHI-PC% od -c ./busicpy_usb.sh /home/Admin/program/zsh 0000000 357 273 277 # ! / u s r / b i n / z s 0000020 h \n \n U S B _ D I R = " / c y g 0000040 d r i v e / g " \n T A R G E T _ 0000060 D I R = " / c y g d r i v e / g 0000100 / b u s i " \n \n e c h o " U S 0000120 B 343 203 236 343 202 246 343 203 263 343 203 210 343 203 235 0000140 343 202 270 343 202 267 343 203 247 343 203 263 343 200 200 G 0000160 343 203 211 343 203 251 343 202 244 343 203 226 343 202 222 347 0000200 242 272 350 252 215 343 201 227 343 201 276 343 201 231 343 200

  • k_izumo
  • ベストアンサー率50% (68/134)
回答No.1

zshのインストールからやり直してみたらどうでしょう?

関連するQ&A