diff --git a/CHANGELOG.md b/CHANGELOG.md index 886fbfe2..918f94dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Fixed a bad type conversion which could cause underflow on a window resize +- Alacritty now spawns a login shell on macOS, as with Terminal.app and iTerm2 ## Version 0.2.3 diff --git a/src/tty/unix.rs b/src/tty/unix.rs index d6ab6a46..db20f6bf 100644 --- a/src/tty/unix.rs +++ b/src/tty/unix.rs @@ -221,9 +221,18 @@ pub fn new( let (master, slave) = openpty(win.ws_row as _, win.ws_col as _); - let default_shell = &Shell::new(pw.shell); - let shell = config.shell() - .unwrap_or(default_shell); + let default_shell = if cfg!(target_os = "macos") { + let shell_name = pw.shell.rsplit('/').next().unwrap(); + let argv = vec![ + String::from("-c"), + format!("exec -a -{} {}", shell_name, pw.shell), + ]; + + Shell::new_with_args("/bin/bash", argv) + } else { + Shell::new(pw.shell) + }; + let shell = config.shell().unwrap_or(&default_shell); let initial_command = options.command().unwrap_or(shell); @@ -243,7 +252,7 @@ pub fn new( // Setup shell environment builder.env("LOGNAME", pw.name); builder.env("USER", pw.name); - builder.env("SHELL", shell.program()); + builder.env("SHELL", pw.shell); builder.env("HOME", pw.dir); if let Some(window_id) = window_id {