求修改一小段 bash 脚本使之与 zsh 兼容 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
xuegy

求修改一小段 bash 脚本使之与 zsh 兼容

  •  
  •   xuegy 2021 年 3 月 1 日 2166 次点击
    这是一个创建于 1882 天前的主题,其中的信息可能已经有所发展或是发生改变。

    就 4 行代码应该难不倒大佬们

     paraview () { local _paraviews=(/Applications/[Pp][Aa][Rr][Aa][Vv][Ii][Ee][Ww]*.app) $_paraviews/Contents/MacOS/paraview "$@" } export -f paraview 

    这段只能在 bash 上跑,zsh 不认export -f,上网研究了半天,都说要把函数挪到 zshrc 里面,那就跟 bash 又不兼容了。

    15 条回复    2021-03-01 15:13:49 +08:00
    lululau
        1
    lululau  
       2021 年 3 月 1 日
    zsh 不支持导出函数
    xuegy
        2
    xuegy  
    OP
       2021 年 3 月 1 日
    @lululau 加 PATH 会有冲突的问题,所以才用的函数。那这个是不是无解了?
    tankren
        3
    tankren  
       2021 年 3 月 1 日
    这一段用 bash 写,加个头#!/usr/bin/env bash
    然后 zsh 里面调用?
    xuegy
        4
    xuegy  
    OP
       2021 年 3 月 1 日
    @tankren
    ```
    #!/usr/bin/env bash
    echo $SHELL
    ```
    结果返回
    ```
    /bin/zsh
    ```
    还是没法用
    AngryPanda
        5
    AngryPanda  
       2021 年 3 月 1 日
    都说要把函数挪到 zshrc 里面,那就跟 bash 又不兼容了。
    ----------------
    这样如何:

    if [ "$0" == "bash" ]; then
    export -f
    fi
    AngryPanda
        6
    AngryPanda  
       2021 年 3 月 1 日
    @xuegy $SHELL 返回的是默认 shell, $0 是当前 shell
    tankren
        7
    tankren  
       2021 年 3 月 1 日
    @xuegy #4 结果写入文件 zsh 再去读取
    xuegy
        8
    xuegy  
    OP
       2021 年 3 月 1 日
    @AngryPanda 这一段根本就不是可执行文件,是有另一个脚本加载这段文本,所以 hangbang 无效,$0 是空的。
    omph
        9
    omph  
       2021 年 3 月 1 日
    独立成文件,用之前 source 一下不行么?
    TimePPT
        10
    TimePPT  
    PRO
       2021 年 3 月 1 日
    如果需求是 macOS 下快速用某 app 打开文件,直接用 open 命令得了
    initd
        11
    initd  
       2021 年 3 月 1 日
    本地脚本
    bash a.sh

    网络脚本
    bash <(curl -L get.zsh.one)
    initd
        12
    initd  
       2021 年 3 月 1 日
    有些命令 zsh 就是执行不了,
    之前用 certbot 就遇到了这种问题
    initd
        13
    initd  
       2021 年 3 月 1 日
    建议用 ruby 写脚本,比 bash 正常多了
    xuegy
        14
    xuegy  
    OP
       2021 年 3 月 1 日
    @TimePPT 我试过 open 了,参数传不进去。
    xuegy
        15
    xuegy  
    OP
       2021 年 3 月 1 日
    @TimePPT 这个软件本来是 linux 上的,标准的打开方式是加 PATH 。在 mac 上要打个小补丁才能用,所以就变成这样了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     990 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 42ms UTC 18:11 PVG 02:11 LAX 11:11 JFK 14:11
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86