For one user account, I want to have some bash scripts, which of course would be under version control.

The obvious solution is just to put the scripts in a git repository and make ~/bin a symlink to the scripts directory.

Now, it seems on systemd systems ~/.local/bin is supposedly the directory for user scripts.

My question, is mostly, what are the tradeoffs between using ~/bin and ~/.local/bin as directory for my own bash scripts?

One simple scenario I can come up with are 3rd party programs which might modify ~/.local/bin and put their own scripts/starters there, similar to 3rd party applications which put their *.desktop files in ~/.local/applications.

Any advice on this? Is ~/.local/bin safe to use for my scripts or should I stick to the classic ~/bin? Anyone has a better convention?

(Btw.: I am running Debian everywhere, so I do not worry about portability to non systemd Linux systems.)

Solved: Thanks a lot for all the feedback and answering my questions! I’ll settle with having my bash scripts somewhere under ~/my_git_monorepo and linking them to ~/.local/bin to stick to the XDG standard.

  • Fonzie!@ttrpg.network
    link
    fedilink
    arrow-up
    1
    ·
    14 hours ago

    It is better NOT to put them in system directories since those will get overwritten by upgrades.

    That’s a purely Atomic thing, isn’t it?

    • teawrecks@sopuli.xyz
      link
      fedilink
      arrow-up
      1
      ·
      edit-2
      1 hour ago

      Package managers tend to assume they are the only ones touching files in /usr/share. You will find if you try to change any files there, the next update may delete or download a new version of the file, stomping your changes. Instead your local changes should go in /usr/local (if you want something system-wide) or ~/.local (if it only applies to a specific user).

      Ex. If you made a custom .desktop file to show up in your app launcher, or a custom .xsession file to show up in a login manager.

    • ReversalHatchery@beehaw.org
      link
      fedilink
      English
      arrow-up
      1
      ·
      7 hours ago

      not necessarily, package managers tend to overwrite existing files on the same path, if you end up having installing such a package. but that shouldn’t apply to /usr/local