2010-11-22 21 views
10

Cygwinでスクリプトが実行されているかどうかを確認する簡単な方法はありますか?渡されるパスがウィンドウであることを期待するユーティリティを呼び出すスクリプトがあります。そのため、Cygwinの場合、パスをWindowsパスに変換する必要があります。Cygwinで実行中のシェルスクリプトの検出

答えて

15

あなたはunameユーティリティを使用することができます。

-o、--operatingシステム
印刷オペレーティングシステム

例コード:

if [ `uname -o` = "Cygwin" ] 
then 
    # Cygwin specific stuff 
else 
    # Other UNIX (Linux, etc.) specific stuff 
fi 
+3

しかし、より具体的であるが、[OS Xでのuname(1)](http://developer.apple.com/documentation/Darwin/Reference/ManPages/man1/uname。 1.html)(BSD uname)は '-o'フラグをサポートしていません。 – ryandesign

+2

スーパーポータブルである必要がある場合は '-o'を使用することをお勧めしません。* nixのフレーバーが多すぎると認識できません。 '-s'と' -r'の組み合わせによっては、そのトリックが行われなければなりません。そして、それらのフラグは、時間の幕開けからあります。 –

2

チェックunameユーティリティの出力は

+0

+1は 'のuname -o'は –

1

コメントのいくつかを組み合わせてで非推奨バッククォート結果を削除:

uname(1)から
#!/bin/bash 
OS_NAME=$(uname -s) 
OS_NAME=${OS_NAME:0:6} 

if [[ "$OS_NAME" = "CYGWIN" ]] 
then 
    # Cygwin specific stuff 
else 
    # Other UNIX (Linux, etc.) specific stuff 
fi 
3

これはkshとbashで動作します。

#!/bin/ksh 
case "$(uname -s)" in 
    CYGWIN*) echo This is Cygwin ;; 
    *) echo This is not Cygwin ;; 
esac 
関連する問題