I’ve done something similiar to this over the years for organization purposes and not having to change much between shells except add a path. You can also add cases that check your shell and do something slightly different if needed.

    • Ferk@lemmy.ml
      link
      fedilink
      arrow-up
      1
      ·
      edit-2
      9 hours ago

      It still limits where / how you use them.

      For example, it’s easier / more efficient to call a shell script from sway (or whichever other software that might be running without a bash login session behind) than to try and force it to load a whole shell login session that includes those functions (which might also slow down the startup of the program and make it need a bit more ram without much of a benefit).

      Scripts can reliably be run from everywhere (specially if placed somewhere in $PATH), functions require some preloading for every single new shell process and making sure the program invoking the shell (be it a terminal emulator or something else) is actually loading it. So as someone who likes to automate everything and often assigns hotkeys to particular commandline oneliners, scripts are much better… even a symlink might be more reliable than an alias.

    • Ricaz@lemmy.dbzer0.com
      link
      fedilink
      English
      arrow-up
      4
      ·
      21 hours ago

      I agree. My .zshrc is littered with functions. Most useful ones are my pack and extract I made ~10 years ago, they just recognize file extension and use the correct tool.

      • PseudoSpock@lemmy.dbzer0.com
        link
        fedilink
        arrow-up
        3
        ·
        20 hours ago

        I even wrote a function to parse a json for some configuration details, and loop through it to dynamically create more named functions from that json profile. I use it at work for automating my cloud account logins with a single profile name from the command line. :)