回答:
私はこの問題に遭遇しました。zshを実行するには、次のようにしました。
mingw32_shell.bat
pacman -Syu
pacman -Sy zsh curl
exit
- インストール直後に実行しませんでしたzsh
。start %WD%mintty -i /msys2.ico /usr/bin/bash --login %*
ように
変更しました(2015年9月23日の
start %WD%mintty -i /msys2.ico /usr/bin/zsh --login %*
39行目)。mingw32_shell.bat
0
、.zshrcファイルの作成を選択します。設定が完了すると、次のことがわかりました。
zsh-newuser-install:1119: command not found: rm
これは正しくrm
ありませんでした... 健全な* nixシステム(MSYS2のzshパッケージのバグだと思います)でネットを見つけてはならないためですが、その後はすべて正常に動作しました。
新しいセッションを作成するためにバッチファイルを開いて実行したときにこれを初めて試したとき、zshのメモリ領域がすでに占有されているというエラーを受け取りました。これを修正するために、開いているすべてのMinTTYウィンドウを閉じautorebase.bat
、MSYS2インストールディレクトリでファイルを実行しました。その後はすべてうまくいきました。
次に、oh-my-zshをインストールしました。使用:
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
rm
実際には本当に無実です。/usr/share/zsh/functions/Newuser/zsh-newuser-install
スクリプトの最後には、rm -f $tmpfile*
それ自体をクリーンアップするためのが含まれています。私のFedoraインストールの現在のバージョンとまったく同じ/usr/share/zsh/5.7.1/functions/zsh-newuser-install
です。
私.exe
は、バッチファイルではなくランチャーを提供する新しいmsys2-launcherを使用してこれに遭遇しました。
このために、それは単に変更の問題だった.ini
(64ビットインストールのために、それが含まれている場合がありますMsys2のルートディレクトリ内のランチャーと一緒にファイルをmsys2.ini
、mingw32.ini
とmingw64.ini
)。これらの各iniファイルについて、シェルを設定する行を追加します。
SHELL=/usr/bin/zsh
編集して/etc/nsswitch.conf
、以下の設定を変更します。
db_shell: /bin/zsh
msys2_shell.cmd
batファイル内にシェルを設定することもでき.cmd
ますが、.exe
sの1つから開始する必要がある場合、ファイルで変更してもシェルには影響しません
デフォルトのシェルの変更がサポートされていない場合、好きなシェルを使用する1つの方法は、デフォルトのシェルが起動したらすぐに起動することです。
例えば、単に書くzsh
には~/.bashrc
、いつのbashが起動、それはあなたのためのzshを実行します。stray bashプロセスが実行されたままで、ログアウトするときにシェルを2回終了する必要がある場合。より良くするために、のexec zsh
代わりにを書き込んでくださいzsh
。このようにして、bashプロセスはzshプロセスに完全に置き換えられます。
この方法は完璧ではありませんが、ほとんどの場合うまくいくはずです。ハードコードされた値の変更と比較して、互換性の問題が少なくなる場合があります。
StackOverflowのこの回答で最初に言及されています。
でしたインストールマイません受け入れ答えに記載されたファイルを持っている(msys2_shell.bat
、mingw32_shell.bat
、およびmingw64_shell.bat
)。
代わりに私のWin10システムは、インストールのMSYS2(インストーラファイルを使用してmsys2-x86_64-20161025.exe
、1つのファイルを持っている)msys2_shell.cmd
の行で:
set "LOGINSHELL=bash"
に変更bash
しましたzsh
。これまでのところ機能しているようです。
.exe
ファイルの1つからmsys2を起動する必要がある場合、これはシェルを設定しません。そのため、Alan Pearceの回答を調べます
解決策はありますが、現在使用している他の端末ではなく、ConEmuを使用する必要があります。でも試してみてください。私の意見では、これはWindowsで最高のターミナルアプリです。
まず、pacmanを使用してzshをインストールする必要があります。あなたはすでにこれまでに得ていると思います。次に、ConEmuをインストールする必要があります(これはChocolateyを使用するか、conemuサイトからインストーラーをダウンロードするだけで実行できます)。ConEmu設定の[タスク]で、新しいタスクを追加する必要があります。おそらくすでに呼ばれているBash::Msys2-64
ものかそのようなものがあるので、あなたは呼ばれるものを作るでしょうZsh::Msys2-64
。名前はどのような場合でも任意です。この新しいタスクの[コマンド]ボックスでは、基本的にコマンドをコピーして、必要に応じてBash::Msys2-64
置き換えることができzsh.exe
ます。鉱山は次のようなものです:
set CHERE_INVOKING=1 & %ConEmuDrive%\msys64\usr\bin\zsh.exe --login -i -new_console:C:"%ConEmuDrive%\msys64\msys2.ico"
次に、ConEmuの[スタートアップ]オプションで、これをスタートアップタスクとして設定し、ConEmuを開くと毎回Zshにアクセスできるようになります。もちろん、それを開くためのキーコンボを設定したり、他のタスクを新しいタブまたは必要なものに設定したりすることもできます。ConEmuにはたくさんのオプションがあるので、好きなように設定できると思います。
最新のインストールではmsys2_shell
、WindowsにインストールされてMSYS2環境を起動するコマンドが-shell
引数を受け入れるため、MSYS2開発者は明らかにセットアップを変更し続けます。
したがって、別のシェルを使用するには、MSYS2 / MinGW 32 / MinGW 64の1つまたは複数のランチャーのプロパティを編集し、ターゲットを更新して追加すること-shell zsh
もできます。(シェルがされている場合$PATH
、十分なのですMSYS環境のため、あなたは完全なパスを必要としません。)
たとえば、Win7の[スタート]メニューの[MSYS2 64ビット]にある[MSYS2 MinGW 64ビット]ランチャーの場合:
目標: C:\msys64\msys2_shell.cmd -mingw64
目標: C:\msys64\msys2_shell.cmd -mingw64 -shell zsh
アップグレードなどで変更が消去されないため、これは永続的に切り替える最も簡単で互換性のある方法のようです。
奇妙なことに、ランチャーは環境変数やレジストリエントリなどを考慮しません。-shell
コマンドラインで渡されてオーバーライドされない限り、LOGINSHELL=bash
最初に強制されるデフォルトが使用されます。
編集:以下は、MSYS2の以前のバージョンに適用されます。2020-01-21以降、これは不要になりました。FeRDの答えは最もうまくいくようです。
バッシュの代わりに魚を使いたかった。残念ながら、ここでのメソッドのほとんどは機能しませんでした。おそらく魚の構文が非常に異なるためです。
最も効果的だったのはexec fish
、bashの開始時に最初に実行するというwzhdのアイデアでした。ただし、まだ問題がありました。bashを使用したい場合は、編集.bashrc
してその行を削除する必要がありました。なぜなら、それをfishから実行しても、別のfishインスタンスを開始するだけだからです。
最善のexec fish
方法は、msys2の開始時に実行されるようにすることですが、bashが開始されるたびに実行されるとは限りません。
私が見つけた方法はmsys2_shell.cmd
、msys2のインストールフォルダー内のファイルを介してです。私はこれらの行を見つけました:
set SHELL_ARGS=
:collectparams
if not "x%~1" == "x" set SHELL_ARGS=%SHELL_ARGS% %1& shift& goto :collectparams
開始と同時に、bashに渡すパラメーターを定義しているようですが、このスクリプトが実行されたときのみ.bashrc
です(とは異なります)。だから私はこの行を直後に追加しました:
set SHELL_ARGS=%SHELL_ARGS% -c "exec fish"
これまでのところすべてが問題ないようです。msys2を起動すると、前者の読み込みが完了するとすぐにbashがfishに置き換えられますが、bashコマンドラインが必要な場合でも、で起動できbash
ます。