3 stable releases
| 1.1.0 | Jan 15, 2024 |
|---|---|
| 1.0.1 | Jul 24, 2023 |
| 1.0.0 | Jul 23, 2023 |
#653 in Unix APIs
Used in goup
9KB
187 lines
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"
}
Credits
This implementation is very much inspired and influenced by the shell infer implementation in Schniz/fnm (see fnm/src/shell).
Dependencies
~1–1.8MB
~38K SLoC