• 0 Posts
  • 4 Comments
Joined 5 months ago
cake
Cake day: December 10th, 2024

help-circle

  • Neither ~/bin or ~/.local/bin are part of most shell’s default $PATH so you’re going to have to modify the user’s shell profile (or rc) to include it. It’s possible that your favorite distro includes it but not mine. For example(s):

    unset PATH                                             
    
    ﬌ /bin/bash --noprofile --norc         
    bash-5.2$ echo $PATH
    /usr/local/bin:/usr/bin
    

    or

    unset PATH
    
    ﬌ /bin/zsh --no-rcs --no-global-rcs
    Sinthesis% echo $PATH
    /bin:/usr/bin:/usr/ucb:/usr/local/bin
    
    ﬌ ls -l /bin
    lrwxrwxrwx. 1 root root 7 Jan 23  2024 /bin -> usr/bin
    

    That was on Fedora. The funny thing is /bin is soft linked to usr/bin, weeeee.

    This is on Debian

    Sinthesis@debian:~$ /bin/bash --noprofile --norc
    bash-5.2$ echo $PATH
    /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.
    

    I’m not sure why you’re bringing the XDG or systemd “standard” into this. POSIX standard would be more appropriate but they don’t say anything on the matter, nor should they really. The most important thing is, be predictable. If the user has a problem with one of your scripts, what do they do first? which wolf_bin will show them the full path to the script. So really, the location does not matter much.

    That said I would go with one of these two options:

    1. Make a package for your distro. This may be overkill for a couple scripts but you did say they’re in a git repository so you could automate it. The package would install to /usr/bin which would require sudo or root. If the scripts are only allowed to be run by one user, set the rwx and group permissions.

    2. A pattern I like, especially for lightweight things such as scripts that don’t require compiling or OS management and also are using git; a “hidden” or “dot” directory in the user’s home where the repo lives e.g. ~/.lemmywolf/ Then add scripts directory to the user’s $PATH e.g. PATH=$PATH:~/.lemmywolf/scripts. This is what some fairly large projects like pyenv or volta do. You could take it a step farther and modify this installer script to your liking https://github.com/pyenv/pyenv-installer/blob/master/bin/pyenv-installer

    /edit 20 year Linux user (Redhat AS2.1) and 5 years of Unix (HPUX & Solaris) before that.