- PR -

WindowsバッチファイルとUNIXシェルスクリプトのプロセスの違い

1
投稿者投稿内容
そふとくりーむ
会議室デビュー日: 2006/07/20
投稿数: 2
投稿日時: 2006-07-20 20:47
Winバッチファイル内、Unixシェルスクリプト内で
ファイルを実行するときのプロセスの状態の違いについて。
正確なもしくは分かりやすい情報はどこにありますか?
下記のとおりでしょうか?

■Windowsはそのバッチファイルのプロセス内で実行
 cdでディレクトリを移動しても次のコマンドに引き継がれる。

■Unixはコマンドごとに新しいプロセスを作成して実行、プロセス削除。
 cdでディレクトリを移動しても次のコマンドに引き継がれない。
 ※回避は cd aaa; xyz ?

また Makefileもnmakeとmakeの扱いも同様ですか?
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2006-07-20 23:55
引用:

そふとくりーむさんの書き込み (2006-07-20 20:47) より:
■Windowsはそのバッチファイルのプロセス内で実行
 cdでディレクトリを移動しても次のコマンドに引き継がれる。


「ファイルを実行」という表現が外部コマンドの実行だとすれば、
バッチファイルのプロセス(CMD.EXE)内で実行するわけじゃないです。

CMD.EXEのプロセス内で実行されるのは内部コマンドだけです。

引用:

■Unixはコマンドごとに新しいプロセスを作成して実行、プロセス削除。
 cdでディレクトリを移動しても次のコマンドに引き継がれない。
 ※回避は cd aaa; xyz ?


Windowsと同じように引き継がれると思いますよ・・・?
もしかして、';'で区切って同じ行に書けば挙動が変わると思ってたりします?
(cd aaa); xyzというように子プロセス化すれば挙動が変わりますけど。

cdに関してはWindows/Unix共にshellのプロセス内で実行されますよ。
カレントディレクトリはどちらのモデルもプロセス毎に存在するので、
外部のプロセスから変更するような作りにはなっていません。

引用:

また Makefileもnmakeとmakeの扱いも同様ですか?


どちらもMakefileのあるディレクトリがカレントになったような?
もうずいぶんMakefileなんて書いてないのでおぼろげですが。
1

スキルアップ/キャリアアップ(JOB@IT)