より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

LinuxとWindowsにはdateコマンドはあるが結果は異なる

バッチファイルのメンテをしていたのですが、Linuxコマンドを記述したbashファイルでした。

Windowsオンリーで育った私は、じゃあ、Cmderあたりで動かせるんじゃないかなーと思って動かしたのですが、失敗でした。

CmderはLinuxのコマンドを動かすことができます。lsとかcurlとか。

ですが、ここに落とし穴があります。

WindowsにもLinuxにも同じ名前のコマンドがあるのです。

その一つがdateコマンドです。そして、挙動が異なります。

f:id:rimever:20190921145442p:plain
windowsにもlinuxにもdateコマンドがあるが、結果は異なる

Linuxは現在日時を表示しますが、Windowsではシステム日時を設定するコマンドです。

f:id:rimever:20190921184632p:plain

一時的にでもLinuxコマンドを優先するように出来ないかと調べましたがCmderには不可能そうです。

Git for Windowsコマンドプロンプト上でUNIXコマンドを使えるようにしても同様です。Windowsコマンドが優先されます。(bash.exeを直接実行すれば可能です)

なので、bashファイルをより正しく動かすにはWindows Subsystem for Linuxを使うことになります。

echoについて

echoについても挙動が異なります。

簡単な出力だけであれば問題ありませんが、Linuxコマンドの方がechoに対して引数オプションが多様です。

eng-entrance.com