aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/sh/.profile
blob: 658c65bf5cc6038400e005841b4b6332a35b3eb4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/bin/sh
# shellcheck disable=2046,1090

# Most of this script is a user scoped version of /etc/profile

# Append "$1" to $PATH when not already in.
# This function API is accessible to scripts in $XDG_CONFIG_HOME/profile.d
append_path() {
	case ":$PATH:" in
	*:"$1":*) ;;
	*)
		PATH="${PATH:+$PATH:}$1"
		;;
	esac
}

# Use systemd-environment-d-generator(8) to generate environment, and export those variables
# NOTE: To avoid overriding PATH, we rename it and append it separately
#
# See: https://wiki.archlinux.org/title/Environment_variables#Per_Wayland_session
for gen in /usr/lib/systemd/user-environment-generators/*; do
	if [ -e "$gen" ]; then
		export $($gen | sed 's/^PATH=/GEN_PATH=/' | xargs)
		append_path "$GEN_PATH"
		unset GEN_PATH
	fi
done

append_path "$HOME/.local/bin"

# Force PATH to be environment
export PATH

# Load profiles from $XDG_CONFIG_HOME/profile.d
if test -d "$XDG_CONFIG_HOME"/profile.d/; then
	for profile in "$XDG_CONFIG_HOME"/profile.d/*.sh; do
		test -r "$profile" && . "$profile"
	done
	unset profile
fi

# Unload our profile API functions
unset -f append_path

# Manually parse and export XDG user directories. xdg-user-dirs-update is disabled in
# $XDG_CONFIG_HOME/user-dirs.conf due to how it handles non-existent directories
#
# See: https://wiki.archlinux.org/title/XDG_user_directories
if [ -e "$HOME/.config/user-dirs.dirs" ]; then
	export $(xargs <"$HOME/.config/user-dirs.dirs")
fi