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.

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

    I’m not sure why you’re bringing the XDG or systemd “standard” into this.

    Probably because in their “basedir” specification they do recommend ~/.local/bin to be in $PATH. I’m sure there’s more than one distro following that spec, whether we’d want to consider it standard or not. I also believe there’s some software (like flatpak) that may place scripts there too, when configured to offer commands for user-level instalations.

    Here’s a quote from the spec:

    User-specific executable files may be stored in $HOME/.local/bin. Distributions should ensure this directory shows up in the UNIX $PATH environment variable, at an appropriate place.