pacman -S fish
pacman -S man
if status --is-login
の条件内に以下のコードを追加 (/etc/profile
と同様にパスを設定) する。
Windows の既存のパスを引き継ぎたくない場合は、1行目末尾の $PATH
は抜いておいてもよい。
set PATH /usr/local/bin /usr/bin /bin $PATH
set MANPATH /usr/local/man /usr/share/fish/man /usr/share/man /usr/man /share/man $MANPATH
set -gx INFOPATH /usr/local/info /usr/share/info /usr/info /share/info $INFOPATH
if test -n $MSYSTEM
switch $MSYSTEM
case MINGW32
set MINGW_MOUNT_POINT /mingw32
set -gx PATH $MINGW_MOUNT_POINT/bin $MSYS2_PATH $PATH
set -gx PKG_CONFIG_PATH $MINGW_MOUNT_POINT/lib/pkgconfig $MINGW_MOUNT_POINT/share/pkgconfig
set ACLOCAL_PATH $MINGW_MOUNT_POINT/share/aclocal /usr/share/aclocal
set -gx MANPATH $MINGW_MOUNT_POINT/share/man $MANPATH
case MINGW64
set MINGW_MOUNT_POINT /mingw64
set -gx PATH $MINGW_MOUNT_POINT/bin $MSYS2_PATH $PATH
set -gx PKG_CONFIG_PATH $MINGW_MOUNT_POINT/lib/pkgconfig $MINGW_MOUNT_POINT/share/pkgconfig
set ACLOCAL_PATH $MINGW_MOUNT_POINT/share/aclocal /usr/share/aclocal
set -gx MANPATH $MINGW_MOUNT_POINT/share/man $MANPATH
case MSYS
set -gx PATH $MSYS2_PATH /opt/bin:$PATH
set -gx PKG_CONFIG_PATH /usr/lib/pkgconfig /usr/share/pkgconfig /lib/pkgconfig
set -gx MANPATH $MANPATH
case '*'
set -gx PATH $MSYS2_PATH $PATH
set -gx MANPATH $MANPATH
end
end
set -gx SYSCONFDIR /etc
set ORIGINAL_TMP $TMP
set ORIGINAL_TEMP $TEMP
set -e TMP
set -e TEMP
set -gx tmp (cygpath -w $ORIGINAL_TMP 2> /dev/null)
set -gx temp (cygpath -w $ORIGINAL_TEMP 2> /dev/null)
set -gx TMP /tmp
set -gx TEMP /tmp
set p "/proc/registry/HKEY_CURRENT_USER/Software/Microsoft/Windows NT/CurrentVersion/Windows/Device"
if test -e $p
read PRINTER < $p
set -gx PRINTER (echo $PRINTER | sed -e 's/,.*$//g')
end
set -e p
if test -n $ACLOCAL_PATH
set -gx ACLOCAL_PATH $ACLOCAL_PATH
end
set -gx LC_COLLATE C
for postinst in /etc/post-install/*.post
if test -e $postinst
sh -c $postinst
end
end
complete.cpp does not parse PATH directories with parenthesis correctly. #952 fish-shell/fish-shell
64bit Windows の場合、$PATH
に(x86)
が含まれている。
msys2 上の fish のプロンプトでコマンドの補完をした時、 $PATH
中の (x86)
をコマンド実行の置換のための (...)
と勘違いして、x86というコマンドがないため <TAB>
補完中にエラーが出力される。
そこで、上記ファイルに、以下の function を定義する。
function x86
echo '(x86)'
end
function X86
echo '(X86)'
end
たいへんバカバカしいですが、ちゃんと動く。
スタートメニューのMSYS2 shell.bat
からも起動するように変更する。
start %WD%mintty -i /msys2.ico /usr/bin/bash --login %*
のところを
SET XDG_RUNTIME_DIR=/tmp/fish.%USERNAME%
start %WD%mintty -i /msys2.ico /usr/bin/fish --login %*
に変更する。
XDG_RUNTIME_DIR
を変更しているのは、msys/cygwin ではこの変数がシェル起動時に自動的に設定できないようでエラーとなってしまうため。
(fish-shell/fish-shell#1887 (comment))
ConEmu に Task を追加して、以下のようなコマンドを指定
C:\msys64\usr\bin\sh.exe -c 'MSYSTEM=MSYS XDG_RUNTIME_DIR=/tmp/fish.$USERNAME exec /usr/bin/fish --login' -new_console:C:"\msys64\msys2.ico" -new_console:d:"%USERPROFILE%"