解决Windows下PowerShell执行make后上箭头输出[A的问题
解决PowerShell运行make(bash作为shell)后上箭头失效的问题
临时急救法
如果已经出现按上箭头输出[A的情况,不用重启PowerShell,直接在当前窗口执行:
stty sane
若系统没有stty命令,可执行:
[Console]::ResetColor(); $Host.UI.RawUI.FlushInputBuffer()
执行后就能立刻恢复上箭头调取历史命令的功能。
根治方法1:给bash添加退出自动重置规则
打开bash的配置文件(比如~/.bashrc),添加一行:
trap 'stty sane' EXIT
这行代码会让bash每次退出时自动重置终端属性,不管是被make调用还是单独启动,都不会破坏PowerShell的终端设置。
根治方法2:修改make目标命令
如果不想修改bash全局配置,就在每个调用bash的make目标末尾追加stty sane。比如原make目标是:
build: bash -c "npm run build && cp dist/* ../server"
修改为:
build: bash -c "npm run build && cp dist/* ../server; stty sane"
让bash执行完任务后主动重置终端状态。
根治方法3:切换make的默认shell为PowerShell
如果你的命令兼容PowerShell,直接把make的默认shell换成powershell,从根源避免终端设置冲突。在makefile开头添加:
SHELL := powershell.exe .SHELLFLAGS := -NoProfile -Command
之后make会用PowerShell执行所有命令,不会再出现上箭头失效的问题。
内容的提问来源于stack exchange,提问作者Jan Benedek
相关产品推荐
相关产品推荐

