From b51d2a4f12f58ba487366676269278ae2a445b68 Mon Sep 17 00:00:00 2001 From: andromeda Date: Sat, 17 Jan 2026 19:58:11 +0100 Subject: [PATCH] creates sh in empty environment --- src/main.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main.rs b/src/main.rs index a0f78bc..913d5e3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -16,7 +16,6 @@ use vte::{Params, Parser, Perform}; use zeno::{Mask, Transform}; // params -const SHELL: &str = "/home/andromeda/.nix-profile/bin/sh"; const FONT: &str = "/home/andromeda/.nix-profile/share/fonts/truetype/Miracode.ttf"; struct Buffer { @@ -186,7 +185,7 @@ fn main() { .unwrap(); window.set_target_fps(60); - let pty = spawn_pty(&SHELL).unwrap(); + let pty = spawn_pty().unwrap(); fcntl( &pty, F_SETFL(OFlag::from_bits_truncate(fcntl(&pty, F_GETFL).unwrap()) | OFlag::O_NONBLOCK), @@ -257,7 +256,7 @@ fn main() { } // forks a new pty and returns file descriptor of the master -fn spawn_pty(shell: &str) -> Option { +fn spawn_pty() -> Option { // SAFETY safe unless os out of PTYs; incredibly unlikely match unsafe { forkpty(None, None) } { Ok(fork_pty_res) => match fork_pty_res { @@ -266,7 +265,14 @@ fn spawn_pty(shell: &str) -> Option { return Some(unsafe { PtyMaster::from_owned_fd(master) }); } ForkptyResult::Child => { - let _ = execv::(&CString::new(shell).unwrap(), &[]); + let _ = execv::( + &CString::new("/usr/bin/env").unwrap(), + &[ CString::new("/usr/bin/env").unwrap(), + CString::new("-i").unwrap(), + CString::new("sh").unwrap(), + CString::new("--norc").unwrap(), + CString::new("--noprofile").unwrap() ], + ); return None; } },