Skip to content

[bash|zsh|...] Missing ~/.local/bin from $PATH as per systemd spec

Task Info (Flyspray)
Opened By Martin Rys (C0rn3j)
Task ID 77447
Type Bug Report
Project Arch Linux
Category Packages: Core
Version None
OS All
Opened 2023-02-10 00:07:29 UTC
Status Assigned
Assignee Sébastien Luttringer (seblu)

Details

Description: systemd specification requires ~/.local/bin/ to be in $PATH, as per https://www.freedesktop.org/software/systemd/man/file-hierarchy.html - ~/.local/bin/ "Executables that shall appear in the user's $PATH search path."

This can be verified on the running system with systemd-path user-binaries which will output the path.

To fix this in Bash, one could use following code which is taken from Debian and should be put at the end of https://github.com/archlinux/svntogit-packages/blob/packages/bash/trunk/dot.bash_profile :

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"
fi

I am not sure how to fix this globally for all shells without edits for each, aside from perhaps a drop-in in /etc/profile.d?

Repro of an issue - This path is used by pip which puts its executables into it when installed with --user:

pip install shell-gpt --user sgpt will fail because it is in ~/.local/bin/sgpt

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information