Files
RedBear-OS/recipes/shells/bash/etc/profile
T
vasilito 299a86f6e3 bash: avoid subprocess spawns during interactive shell startup
On the live image, a fork/exec during login-shell startup can stall the
shell before its first prompt. Replace command substitutions with pure
builtins in the startup path:

- bash.bashrc: read /etc/redox_chroot with the 'read' builtin instead of
  $(cat ...)
- profile: derive the root prompt from EUID/USER/LOGNAME (set by
  login(1)) instead of $(id -u)
- skel/.bashrc: disable lesspipe and dircolors eval (both spawn
  subprocesses); keep the ls --color=auto alias
2026-07-20 09:05:32 +09:00

33 lines
1.0 KiB
Bash

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ "${PS1-}" ]; then
if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='\h:\w\$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
# Do NOT spawn a subprocess here (the old `$(id -u)` command substitution).
# A login shell sources this file before drawing its first prompt; on Redox
# a process spawn during that window can stall, hanging the shell before it
# is ever usable. Use the shell/login-provided EUID or USER instead — both
# are set by login(1) — so this stays a pure builtin test with no fork/exec.
if [ "${EUID-}" = 0 ] || [ "${USER-}" = root ] || [ "${LOGNAME-}" = root ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi