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.

  • nanook@friendica.eskimo.com
    link
    fedilink
    arrow-up
    15
    arrow-down
    6
    ·
    1 day ago

    Put them wherever you want, don’t let Poettering dictate what you do with YOUR system. It is better NOT to put them in system directories since those will get overwritten by upgrades.

    • Fonzie!@ttrpg.network
      link
      fedilink
      arrow-up
      1
      ·
      1 day 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
        13 hours 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
        ·
        19 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