summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjorn Neergaard <bjorn@neersighted.com>2018-12-03 15:26:59 -0700
committerChristian Duerr <chrisduerr@users.noreply.github.com>2018-12-03 22:26:59 +0000
commit0d2f5b0f0f9f5779fe6bcdd3016ed4cfc222f7bd (patch)
tree7cd2df911fd43cb61c7db586721d34f1249b6711
parentca9a259caa59e48db3bdfdf021ee26c8bb85be99 (diff)
Launch a login shell by default on macOS
-rw-r--r--CHANGELOG.md1
-rw-r--r--src/tty/unix.rs17
2 files changed, 14 insertions, 4 deletions
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<T: ToWinsize>(
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<T: ToWinsize>(
// 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 {