Skip to content

feat: shell PATH resolution, env propagation, /etc/bshrc#233

Merged
ryanbreen merged 1 commit intomainfrom
feat/shell-path-env-modernization
Feb 18, 2026
Merged

feat: shell PATH resolution, env propagation, /etc/bshrc#233
ryanbreen merged 1 commit intomainfrom
feat/shell-path-env-modernization

Conversation

@ryanbreen
Copy link
Owner

Summary

  • Delete PROGRAM_REGISTRY from init_shell — replaced with dynamic $PATH-based command resolution via resolve_command() using sys_access()
  • Pass real envp to child processes in both try_execute_external() and execute_pipeline_command() (was passing empty envp)
  • Add export/env builtins to init_shell for environment variable management
  • Update bsh default_path() to include /sbin and /usr/local/cbin (was missing both)
  • Create /etc/bshrc on ext2 image — ECMAScript startup config for bsh (sets PATH, HOME, SHELL, HOSTNAME, prints welcome)
  • Fix HOME=/HOME=/home in kernel default environment (fixes env_musl_test failure)

Test plan

  • x86_64 build: zero warnings (cargo build --release --features testing,external_test_bins --bin qemu-uefi)
  • Boot test passes: ./docker/qemu/run-boot-parallel.sh 1
  • Commands still resolve via PATH (bls, bcat, etc.)
  • export and env builtins work in init_shell
  • env_musl_test passes (HOME=/home)
  • bsh loads /etc/bshrc on startup

🤖 Generated with Claude Code

…bshrc

Replace the hardcoded PROGRAM_REGISTRY in init_shell with dynamic PATH-based
command resolution using $PATH environment variable. Both init_shell and bsh
now properly search /bin:/sbin:/usr/local/cbin for executables.

- Delete ProgramEntry/PROGRAM_REGISTRY (20 hardcoded entries) from init_shell
- Add resolve_command() that searches $PATH via sys_access()
- Pass real envp (from std::env::vars()) to child processes via execve
- Add export/env builtins to init_shell for environment management
- Update bsh default_path() to include /sbin and /usr/local/cbin
- Create /etc/bshrc on ext2 image (ECMAScript config for bsh shell)
- Fix HOME=/ to HOME=/home in kernel default environment (3 locations)

Co-Authored-By: Ryan Breen <ryanbreen@gmail.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@ryanbreen ryanbreen merged commit 6f73a28 into main Feb 18, 2026
@ryanbreen ryanbreen deleted the feat/shell-path-env-modernization branch February 18, 2026 20:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant