V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
coolair
V2EX  ›  问与答

Windows 上除了 Powershell 还有好用的 shell 吗?

  •  
  •   coolair · 2022-09-21 08:44:39 +08:00 · 4469 次点击
    这是一个创建于 555 天前的主题,其中的信息可能已经有所发展或是发生改变。
    试用了 nushell ,功能真的挺好,速度也快,但就是 bug 太多了,用不下去了。

    还有其他成熟点的 shell 吗?
    48 条回复    2022-09-23 09:42:09 +08:00
    xiaoliu926
        1
    xiaoliu926  
       2022-09-21 08:51:56 +08:00
    FinalShell
    a33291
        2
    a33291  
       2022-09-21 08:53:39 +08:00
    https://github.com/nushell/nushell
    基于 rust,跨平台

    win 上体验唯一可媲美 zsh fish 之类的(非 WSL)shell
    a33291
        3
    a33291  
       2022-09-21 08:54:05 +08:00
    可以具体说一下有哪些 bug 吗?
    uCharles
        4
    uCharles  
       2022-09-21 08:57:09 +08:00
    @xiaoliu926 我前段时间也刚下载了 finalShell ,还没开始正式使用
    0x49
        5
    0x49  
       2022-09-21 08:59:11 +08:00
    推荐 finalshell 咯,修复了内存泄漏的问题,用久了也不会卡了
    sunmker
        6
    sunmker  
       2022-09-21 09:01:38 +08:00   ❤️ 2
    git 的 bash.exe
    a33291
        7
    a33291  
       2022-09-21 09:04:00 +08:00   ❤️ 1
    对于喜欢 finalshell 的朋友,也推荐一个类似的开源替代品可供尝试

    https://github.com/kingToolbox/WindTerm
    yolee599
        8
    yolee599  
       2022-09-21 09:06:36 +08:00 via Android
    msys64
    leelz
        9
    leelz  
       2022-09-21 09:15:15 +08:00
    bash
    Rache1
        10
    Rache1  
       2022-09-21 09:27:02 +08:00
    @a33291

    WindTerm is a partial open source project, and the source will be gradually opened. ┑( ̄Д  ̄)┍
    SpikeChan
        11
    SpikeChan  
       2022-09-21 09:27:46 +08:00
    tabby
    creanme
        12
    creanme  
       2022-09-21 09:30:39 +08:00
    使用过几个月 nushell ,还行吧,常用命令够用了。
    kera0a
        13
    kera0a  
       2022-09-21 09:34:28 +08:00 via iPhone
    搭帖请教彦祖们一个 wsl2 的使用问题,我用 windows 终端装了一个 ubuntu 和 oh my zsh 。
    现在想像 mac 一样,将文件目录拖动到终端然后自动转换成 linux 目录格式应该怎么配置呀
    a33291
        14
    a33291  
       2022-09-21 09:35:22 +08:00
    @Rache1 😁

    我尝试过这个,但不是很喜欢.
    现在主要就用 nushell(所有系统都用这个)+starship+zoxide

    有时候也用 mobaxterm
    moreant
        15
    moreant  
       2022-09-21 09:39:31 +08:00   ❤️ 1
    windows 环境下的 zsh ,能装 ohmyzsh

    就是有点残废,比如 zip 命令需要自己用第三方库实现

    https://miaotony.xyz/2020/12/13/Server_Terminal_gitbash_zsh/#toc-heading-4
    tengyufei
        16
    tengyufei  
       2022-09-21 10:04:42 +08:00 via Android
    好像还真没啥,感觉 pwsh 再装个 busybox 还是能用用的
    dcsuibian
        17
    dcsuibian  
       2022-09-21 10:07:10 +08:00
    在 linux 上用 bash ,在 macOS 上用 zsh ,在 Windows 上用 pwsh 。入乡随俗
    Tumblr
        18
    Tumblr  
       2022-09-21 10:09:03 +08:00   ❤️ 2
    不知道 OP 说的是 Shell 语言呢,还是 Shell 终端。。。
    PowerShell 在 Windows 上既是个终端,也是种语言。

    如果说语言的话,Windows 上还真没有能和 PowerShell 过招儿的;
    如果说终端的话,倒是有几个选项,不过我还是推荐 Windows Terminal 。
    ColorfulBoar
        19
    ColorfulBoar  
       2022-09-21 10:10:39 +08:00
    没有……而且 nushell 不就是照着 PowerShell 的思路做的么,只不过不愿意用.Net (顺便问一下,有啥阳间一点的 Rust 和.Net 互操作的办法么?)自己手动糊了套类型系统
    ysc3839
        20
    ysc3839  
       2022-09-21 10:10:57 +08:00 via Android
    我选择 MSYS2 zsh
    a33291
        21
    a33291  
       2022-09-21 10:17:57 +08:00
    @ColorfulBoar rust 导出 api 后走 pinvoke 吧,或者就是 rpc 模式
    Bazingal
        22
    Bazingal  
       2022-09-21 10:23:08 +08:00
    @ColorfulBoar rust 导出 dll 然后.NET 用 dllimport 算阴间还是阳间
    ddrobot
        23
    ddrobot  
       2022-09-21 10:45:51 +08:00
    单说 shell 的话,WSL1 也是 shell ,还能装一些常用的命令,zsh/fish 随便换
    Jirajine
        24
    Jirajine  
       2022-09-21 11:00:48 +08:00   ❤️ 2
    推荐 elvish ,唯一一个有不错 UI 的新 shell ,其他 shell 还在那里琢磨语言呢,UI 都顾不上。
    @ColorfulBoar 和 PowerShell 区别大了去了,结构化数据和 OOP 差了十万八千里,PowerShell 的一些文章和介绍自己优势的时候总拿 OOP 是结构化数据的好处说事,但 OOP 搁 shell 里纯粹是过度设计。
    waleslau
        25
    waleslau  
       2022-09-21 11:10:41 +08:00
    msys
    waleslau
        26
    waleslau  
       2022-09-21 11:11:35 +08:00
    lostberryzz
        27
    lostberryzz  
       2022-09-21 11:17:51 +08:00
    win 上的环境太乱了,现在能想起来的就有 cygwin ,mingw ,mingw-w64 ,msys2 ,wsl ,wsl2

    对于选择困难症来说,还是用 mac/linux 好一点,直接 zsh 不纠结
    a33291
        28
    a33291  
       2022-09-21 11:22:16 +08:00
    @Jirajine 尝试了一下这个 elvish,自动完成 /建议还是没有 nushell 好使
    Jirajine
        29
    Jirajine  
       2022-09-21 11:47:25 +08:00
    @a33291 elvish 比其他来说一个重要好处是和原生外部命令集成的更好。至于补全,你可以配置一下,能使用 bash 和 fish 的补全,还有不少包括 docker/git 等在内的高质量补全。
    a33291
        30
    a33291  
       2022-09-21 11:51:07 +08:00
    @Jirajine 好的,感谢说明,我在研究下
    sprite82
        31
    sprite82  
       2022-09-21 12:26:15 +08:00 via Android
    git bash
    ysc3839
        32
    ysc3839  
       2022-09-21 12:58:38 +08:00   ❤️ 1
    @ysc3839 顺便说一下我为什么选 MSYS2 zsh 。首先是选择了一个 Unix shell ,因为目前世界上绝大多数命令行用户还是在使用类 Unix 系统的,各种资料很丰富。其次是选择了 zsh ,不选 bash 是因为后者可扩展性较弱,zsh 配合 Oh My Zsh 挺好用的,资料也多。最后选择了 MSYS2 作为 POSIX 兼容层,因为 wsl 性能、与 Windows 的交互性还是不如 MSYS2 的。

    准确说我使用的 MSYS2 是 Git for Windows 的修改版本 https://github.com/git-for-windows/git/wiki/Install-inside-MSYS2-proper
    Git for Windows 对 MSYS2 runtime 进行了一些修改 (比如在 MSYS2 中使用 Windows 的用户目录),但是并未被上游合并。以及去掉了 git 对 POSIX API 的依赖,使其成为原生 Win32 应用,性能更好。
    ysc3839
        33
    ysc3839  
       2022-09-21 12:59:23 +08:00
    @ysc3839 为什么不直接用 Git for Windows ?因为 Git for Windows 没有 pacman 。
    lixinrui000
        34
    lixinrui000  
       2022-09-21 13:24:00 +08:00
    所以阻碍楼主用 pwsh 的主要是速度问题?
    zllmath
        35
    zllmath  
       2022-09-21 15:24:10 +08:00
    ddrobot
        36
    ddrobot  
       2022-09-21 16:11:47 +08:00
    @zllmath 分得清楚 shell 和 terminal 是什么吗
    xiaoxi123
        37
    xiaoxi123  
       2022-09-21 16:23:31 +08:00 via Android
    cmder
    wtsamuel
        38
    wtsamuel  
       2022-09-21 16:57:58 +08:00
    git bash, cmder
    msg7086
        39
    msg7086  
       2022-09-21 17:37:18 +08:00
    zsh 用着挺好的,和我 linux 机器的 zsh 基本同配置文件,切换系统的时候基本无感。
    MonkeyJon
        40
    MonkeyJon  
       2022-09-21 17:37:36 +08:00
    xshell
    um1ng
        41
    um1ng  
       2022-09-21 21:50:38 +08:00
    git bash + vscode termial
    ipcjs
        42
    ipcjs  
       2022-09-21 23:40:05 +08:00
    @ysc3839 这玩意好是好,就是感觉不如 wsl 流畅,有什么解决办法么?
    coolair
        43
    coolair  
    OP
       2022-09-22 09:36:18 +08:00
    @xiaoxi123 @wtsamuel cmder 问题也很多,虽然大多是其他组件的问题,比如:clink ,我目前用的就是 cmder ,clink 都是用的自己修改后编译的版本。

    @a33291 我主要 python 开发,发现 nushell 对虚拟环境支持不是很好,现在可以使用 virtualenv ,但是也有些问题,现在好像解决了,等合并,详见: https://github.com/pypa/virtualenv/pull/2422 。Python 自带的 venv 可以使用这个自己修改下,丢安装目录下也能用。
    其次,就是使用 Windows 终端缓冲区的问题,启动后,按多次回车无法使用鼠标滚轮上翻,在有内容的情况下,按多次回车,使用鼠标滚轮上翻会导致内容丢失。这个问题在 Windows 终端中使用 powershell 时也会出现,但是可以升级 PSReadLine 解决(参考: https://zhuanlan.zhihu.com/p/384591031 ),在 Windows 终端中使用 cmd 没有问题。不知道算 windows 终端的 Bug ,还是 Nushell 的 Bug ,总之,配合使用不是很完美。
    coolair
        44
    coolair  
    OP
       2022-09-22 09:41:14 +08:00
    @lixinrui000 pwsh 怎么记录历史命令的?退出后也保存。
    SgtPepper
        45
    SgtPepper  
       2022-09-22 11:36:06 +08:00
    盗版 Xshell
    SekiBetu
        46
    SekiBetu  
       2022-09-22 20:13:09 +08:00
    @a33291 这不是开源的
    SekiBetu
        47
    SekiBetu  
       2022-09-22 20:13:39 +08:00
    git 不是自带了 shell 环境吗,用 git 就好了
    lixinrui000
        48
    lixinrui000  
       2022-09-23 09:42:09 +08:00
    @coolair 应该是自动保存的。Ctrl-r 就可以搜索。我用了 powershell 的 fzf 插件,ctrl-r 可以以列表形式搜索历史记录。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4128 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 05:26 · PVG 13:26 · LAX 22:26 · JFK 01:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.