web-dev-qa-db-ja.com

Windowsでのデフォルトのコマンドラインシェルの変更

私(または実行中のプロセス)がWindows(7)でシェルを起動してコマンドを発行したいとすると、利用可能なオプションがいくつかあります。たとえば、次のことができます。

  1. スタートメニューを表示し、cmdと入力して、 Enter;
  2. ショートカットを介してコマンドプロンプトを起動します。
  3. サードパーティのツール(Launchyなど)でコマンドプロンプトを表示する、または;
  4. Windowsでいくつかのコマンドを発行します '実行ツール(Win+R)、プロンプトを起動し、コマンドを発行してから戻ります

上記のすべてのメソッドは、(デフォルトで)cmd.exe(通常はWindows\System32ディレクトリにあります)を起動します。

最近、Microsoft独自のPowerShellなどの代替コマンドラインシェルを好むようになりました。ただし、これらのツールを使用することについて私が最も苛立たしいのは、デフォルトでそれらを介してコマンドを起動するために自分の邪魔にならないように思われることです。

PowerShellやCygwinなど、cmd.exeを実行するデフォルトの動作を別のシェルに置き換えることができる方法はありますか?スタートメニューまたはランチャーから発行する可能性のあるコマンドがそのシェルで実行されるだけでなく、他のアプリケーションがシェルを開きたい場合は、そのデフォルトのシェルで開きます。

明確にするために、これにアプローチするためのクリーンな方法があればいいのですが(つまり、実行可能ファイルを単に置き換えるのではなく、どこかにレジストリ設定または構成オプションがあります)。

4
gpmcadam

.1。スタートメニューを表示し、cmdと入力して、 Enter;

代わりにpowershellと入力してください。

.2。ショートカットを介してコマンドプロンプトを起動します。

ショートカットのターゲットを変更します。

.3。サードパーティのツール(Launchyなど)でコマンドプロンプトを表示する、または;

IIRC、Launchyはスタートメニューからのショートカットを使用するだけです。他のいくつかのツールは、_cmd.exe_を実行するようにハードコードされています。

.4。プロンプトを起動し、コマンドを発行してから戻るWindowsの実行ツール(Win + R)でいくつかのコマンドを発行します

「実行」は、名前を入力して特に要求しない限り、シェル、cmd、またはその他を開きません。指定されたプログラムを直接実行します(AFAIK、 ShellExcuteEx() を使用)。

黒いウィンドウは Windowsコンソール です。それ内部で_cmd.exe_が実行されていることを意味しません。 anyコンソールプログラムを持つことができます。 (Unixターミナルでもまったく同じです。シェルでなくても、任意のプログラムを実行できます。)


そうは言っても、一部のプログラムはまだ _%COMSPEC%_環境変数 を尊重する可能性があります。

7
user1686