Skip to content

zekroTJA/whattheshell

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

whattheshell

This crate tries to provide a simple solution for a simple problem: "In what shell am I running?"

With Shell::infer(), the currently used shell is tried to be inferred by inspecting the given environment.

On unix-systems, the output of ps -o ppid,comm {pid} is inspected to get the process' parent process which is followed down the tree until a shell process was found. On non-unix system, the same algorithm is used but by the help of the crate sysinfo.

Example

use whattheshell::Shell;

fn main() {
    let shell = Shell::infer().unwrap();
    println!("{shell}"); // -> "zsh"
}

Supported shells

Here you can find a list of currently supported shells.

  • Shell (sh)
  • Bash (bash)
  • Z shell (zsh)
  • Fish (fish)
  • Nushell (nu)
  • PowerShell (powershell, pwsh)
  • Cmd (cmd)

Are you missing a shell? Feel free to create an issue or create a pull request with an implementation.

Credits

This implementation is very much inspired and influenced by the shell infer implementation in Schniz/fnm (see fnm/src/shell).