Cygwinについて質問です。


先日Cygwinを1.5.25-15から1.7.5-1にアップグレードして以降、
nulというファイルとして残るようになりました。
(Explorerに表示されます)

気が付いたのが最近なのではっきりとはいえませんが、
おそらくアップグレードの前後で挙動が変わっていると思います。

Cygwinの1.7.5-1環境でnulファイルが残らないようにする方法はないでしょうか。

回答の条件
  • URL必須
  • 1人2回まで
  • 13歳以上
  • 登録:2010/07/07 13:28:44
  • 終了:2010/07/10 14:26:50

回答(2件)

id:koriki-WeKan No.1

koriki-WeKan回答回数342ベストアンサー獲得回数202010/07/07 13:34:22

ポイント50pt

1.7.5では特別な DOS デバイスファイル名の一部("aux", "nul", "prn")のファイルの作成がサポートされた。

仕様なのでどうにもならない

http://www.cygwin.com/

id:Lovin

回答ありがとうございます。

仕様であれば仕方ない、ということは理解いたしました。

その上であえて「何とかする方法」があればお願いいたします。

2010/07/07 14:23:05
id:JULY No.2

JULY回答回数966ベストアンサー獲得回数2472010/07/07 14:33:48

ポイント50pt

そもそも、「誰が nul という名前のファイルを作るか?」が分からないと対策が取れないのですが、現象としては、誰かが、/dev/null の代わりに nul を出力先と指定している、という事になります。

似た様な例が、下記のページにありました。

たあのメモ: [メモ] Meadow + Cygwin の組み合わせで NUL ファイルが作成される

上記は Meadow を使っていて出来てしまう例ですが、何をやったときに nul というファイルが出来るかが分かれば、そのソフトの設定で回避出来るかもしれない、ということになります。もし、cygwin を使う度に造られるのであれば、.bashrc など、シェル起動時に実行するスクリプトを疑ってみることになります。

例えば、.bashrc 中に

なんちゃら >nul

というのがあれば、

なんちゃら >/dev/null

と修正すれば解決されると思います。

id:Lovin

回答ありがとうございます。

Cygwinに関する質問ということで詳細を省きましたが、

コンパイル+リンクを行うためのシェルを実行したときに問題の症状が再現します。

cpやrm等の実行時にメッセージを表示させないため「>nul」としています。

「じゃあシェルを直せばよい」ということになるのですが、

諸々の事情でこれを変更するわけにはいかないので悩んでおります。

最悪の場合findで削除する方法をとるしかないのですが、何か手段はないものかと。

提示頂いたリンクは参照済みでしたが、今回の問題とは別件かなと思っていました。

同じようにnulをnullに置き換えることができれば問題を回避できそうですが、

シェルを修正せずに実現する方法がわかりません

2010/07/07 15:55:44
  • id:JULY
    > 「じゃあシェルを直せばよい」ということになるのですが、
    > 諸々の事情でこれを変更するわけにはいかないので悩んでおります。

    う~ん、パッと思いついたのは、カレントディレクトリで

     ls -s /dev/null nul

    とする方法ですが、「>nul」としているコマンドがどこをカレントディレクトリにするか分からないし、そもそも、nul というファイルを作りたくない、というのが趣旨だし(^^;。

    もう一つ、Windows のコマンドプロンプト上で、cygwin 関連の実行ファイルのあるディレクトリに PATH を通して実行する、という方法で、PATH の先頭に C:\cygwin\bin を追加して、

     ls >nul

    とやると、意図した通り、nul というファイルは出来ませんでした。ただ、スクリプトを実行すると、

     bash スクリプト名

    とする必要があり、こうなると「>nul」の部分がコマンドプロンプトが解釈するのではなく、bash が解釈しいてしまうので、nul というファイルが出来てしまいます。

    CYGWIN 環境変数に元の挙動に戻すスイッチが無いかと見たのですが、どうもそれらしいのが見当たらないし...
  • id:Lovin
    コメントありがとうございます。

    koriki-WeKan様が仰るとおり、仕様変更なので設定でどうにかなるものではないのかもしれませんね。
    (Windows用アプリなのにWindowsの仕様に沿わないというのがどうにも納得できませんが・・・)

    もう少し終了せずに回答を受け付けてみますが、シェルを変更できるよう交渉してみます。
    それまでは新たな回答が付くことを期待しつつ我慢します。
  • id:JULY
    > Windows用アプリなのにWindowsの仕様に沿わないというのがどうにも納得できませんが・・・

    逆に、「UNIX 系 OS と同じことを Windows 上でやりたい」という要望に対しては、長年、「なんで、nul や prn というファイル名が作れないんだぁ!」というのが不満だった訳で、それが晴れて、1.7 系で解消された、ということになります。
  • id:Lovin
    UNIX系でのnulやprnというファイル名の扱いは知らないのですが、
    もしそういった名前のファイルを作成することができるのであれば、
    正しい仕様変更なのかもしれませんね。

    そろそろ潮時のようなので終了します。
    結論的には>nulを>/dev/nullに変更することで対応することになりそうです。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません