fix: enhance PATH handling in local environment
Updated the LocalEnvironment class to ensure the PATH variable includes standard directories. This change addresses issues with systemd services and terminal multiplexers that inherit a minimal PATH, improving the execution environment for subprocesses.
This commit is contained in:
parent
daa1f542f9
commit
b10ff83566
1 changed files with 9 additions and 1 deletions
|
|
@ -175,11 +175,19 @@ class LocalEnvironment(BaseEnvironment):
|
||||||
f" printf '{_OUTPUT_FENCE}';"
|
f" printf '{_OUTPUT_FENCE}';"
|
||||||
f" exit $__hermes_rc"
|
f" exit $__hermes_rc"
|
||||||
)
|
)
|
||||||
|
# Ensure PATH always includes standard dirs — systemd services
|
||||||
|
# and some terminal multiplexers inherit a minimal PATH.
|
||||||
|
_SANE_PATH = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||||
|
run_env = dict(os.environ | self.env)
|
||||||
|
existing_path = run_env.get("PATH", "")
|
||||||
|
if "/usr/bin" not in existing_path.split(":"):
|
||||||
|
run_env["PATH"] = f"{existing_path}:{_SANE_PATH}" if existing_path else _SANE_PATH
|
||||||
|
|
||||||
proc = subprocess.Popen(
|
proc = subprocess.Popen(
|
||||||
[user_shell, "-lic", fenced_cmd],
|
[user_shell, "-lic", fenced_cmd],
|
||||||
text=True,
|
text=True,
|
||||||
cwd=work_dir,
|
cwd=work_dir,
|
||||||
env=os.environ | self.env,
|
env=run_env,
|
||||||
encoding="utf-8",
|
encoding="utf-8",
|
||||||
errors="replace",
|
errors="replace",
|
||||||
stdout=subprocess.PIPE,
|
stdout=subprocess.PIPE,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue