[解決済み】Cygwin、Mac、Linuxで動作しているかどうかを確認する方法は?
2022-04-30 07:39:41
質問
Windows/CygwinとMac/Linuxの両方で使用するシェルスクリプトがあります。それぞれのバージョンで若干異なる変数が必要です。
シェル/bash スクリプトが Cygwin で実行されているか、Mac で実行されているか、Linux で実行されているかを検出するにはどうすればよいですか?
どのように解決するのですか?
通常は
uname
の様々なオプションで、どのような環境で実行されているかがわかります。
pax> uname -a
CYGWIN_NT-5.1 IBM-L3F3936 1.5.25(0.156/4/2) 2008-06-12 19:34 i686 Cygwin
pax> uname -s
CYGWIN_NT-5.1
そして、とても参考になるのが
schot
(コメントにて)。
uname -s
与える
Darwin
はOSXの場合、そして
Linux
はLinux用、私のCygwinは
CYGWIN_NT-5.1
. でも、いろいろなバージョンで実験してみないとわからないかもしれませんね。
そこで
bash
のようなチェックを行うコードは、次のようなものになります。
unameOut="$(uname -s)"
case "${unameOut}" in
Linux*) machine=Linux;;
Darwin*) machine=Mac;;
CYGWIN*) machine=Cygwin;;
MINGW*) machine=MinGw;;
*) machine="UNKNOWN:${unameOut}"
esac
echo ${machine}
なお、ここでは、あなたが実際に
内の
CygWin (
bash
のシェルを使用するため、パスはすでに正しく設定されているはずです。あるコメントで指摘されているように、このシェルで
bash
から、スクリプトを渡して
cmd
を使用すると、必要なパスが設定されない可能性があります。
もし、あなたが
は
その場合、正しい実行ファイル(CygWinのもの)が呼び出されるようにするのはあなたの責任です。おそらく、事前にパスを修正するか、実行ファイルの場所を完全に指定します(例:,
/c/cygwin/bin/uname
).
関連
-
[解決済み] etc/profileでVISIBLE=NOWを設定するのはなぜですか?
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashでコマンドの出力に変数を設定するにはどうすればよいですか?
-
[解決済み] Bashで変数が設定されているかどうかを確認する方法は?
-
[解決済み] BashスクリプトからOSを検出する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] osx find exec rm find: exec: 不明な主またはオペレータ
-
[解決済み] MacOSのbashターミナルでexport PS1="\u[\033[m]@[\033[32m]\h:\[\033[33;1m]\w[\033[m]\$" は何を意味していますか?
-
[解決済み] 部分的にコピーされたファイルでscpを再開する方法は?[クローズド]です。
-
[解決済み] find -exec cp {} でエラー 'find: missing argument to -exec' が発生した場合の解決策。TARGET_DIR + [閉店]。
-
[解決済み] awk で行を飛ばすにはどうしたらいいですか?
-
[解決済み] シンプルなAsciiテーブルをCSVに変換する【終了】。
-
[解決済み] シェルスクリプトのシンタックスエラー。予期しないファイルの終了[重複]。
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] BashスクリプトからOSを検出する方法は?
-
[解決済み】OSがmakefileを検出する