- ベストアンサー
CygwinをCMDで使う
質問させていただきます。 Cygwinをインストールしたのですが、CMD.exe上では、いくつかのコマンド(aliasなど)が使えないようです。 CMD起動時にスクリプトを自動実行するにはどこに記述すればよいでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#2です。 lsはbashの組み込みコマンドじゃないです。bashでコマンドの種類を調べるのはtype組み込みコマンドを使います。例えば、type echo とすると、echo is a shell builtin と表示されます。type ls だと、ファイル名が表示されると思います。もしaliasだと表示されたら、unalias ls してから再度 type ls してみてください。 unixだと、/bin/ls か /usr/bin/ls 、cygwin だと bin\ls.exe 。 >経験的にCygwinのほうが優先されるように思うのですが、 bashだと echo $PATH、CMDだと echo %PATH% してみてください。優先度としては、bash も CMD も、 alias -> 組み込みコマンド -> PATHの最初のディレクトリにある外部コマンド -> PATHの2番目の外部コマンド -> 以下同 ちなみにCMDでの alias定義は、「DOSKEY ls=dir /w $* 」のように書きます。
その他の回答 (3)
- jacta
- ベストアンサー率26% (845/3158)
> 具体的にはどうしてなのでしょうか? 既に回答が出ているように、aliasはbashの内部コマンドだからです。 逆に、bashを使うと、cmd.exeの内部コマンドであるdirなどは使えなくなります。
お礼
なるほど。Bashとcmdは両方は使えないと言うことですね。すごくよくわかりました。 ところで、直接は関係ない質問ですが、Cygwinが組み込まれた場合で同じコマンドを実行したとき、経験的にCygwinのほうが優先されるように思うのですが、ここも実装としてそうなっているのでしょうか?度々すみませんm(_ _)m
- notnot
- ベストアンサー率47% (4901/10362)
>どうしてなのでしょうか? aliasは独立したコマンドではなく、bashの組み込みコマンドなので、bashを起動する必要があります。 cygwin.batの中を見ればわかりますが、bash.exeを起動しています。 CMDプロンプトから直接起動できるのは、cygwinのbinディレクトリにある.exeファイルに限ります。
お礼
なるほど!内部コマンドだったのですね! しかし、奇妙なことにCMD上から「ls」は実行できるのです。探してみると「ls」は外部コマンドではないと思ったのですが、なぜでしょうか?繰り返し質問ばかりすみませんm(_ _)m
- jacta
- ベストアンサー率26% (845/3158)
コマンドプロンプト(cmd.exe)ではなく、cygwin.batでbashを起動させましょう。
お礼
ありがとうございます。 具体的にはどうしてなのでしょうか?追加で質問、申し訳ないです。
お礼
なるほど!「ls」に関しては私の勘違いだったのですね。ご指摘ありがとうございます。 DOSでは、DOSKEYというのですか!なるほど。私はDOS世代ではないため、そういった情報にタッチしていた人がうらやましくてなりません(笑) いろいろ教えていただき、最終的には、ファイル名を指定して実行から「cmd /k bash」と起動することに決めました。ここで教えていただいたことは、非常に役に立ちました!これから私もいろいろ調べながらいきたいとおもいます。notnotさんありがとうございました!