diff --git a/README.md b/README.md
index cabf3013..2f0140f7 100644
--- a/README.md
+++ b/README.md
@@ -242,21 +242,6 @@ zoxide can be installed in 4 easy steps:
-
- Ksh
-
- > Add this to the **end** of your config file (usually `~/.kshrc`):
- >
- > ```sh
- > # ksh93
- > eval "$(zoxide init ksh)"
- >
- > # mksh, oksh, etc.
- > eval "$(zoxide init ksh --hook=prompt)"
- > ```
-
-
-
Nushell
diff --git a/contrib/completions/_zoxide b/contrib/completions/_zoxide
index e3452ac1..69882b41 100644
--- a/contrib/completions/_zoxide
+++ b/contrib/completions/_zoxide
@@ -112,7 +112,7 @@ _arguments "${_arguments_options[@]}" : \
'--help[Print help]' \
'-V[Print version]' \
'--version[Print version]' \
-':shell:(bash elvish fish ksh nushell posix powershell xonsh zsh)' \
+':shell:(bash elvish fish nushell posix powershell xonsh zsh)' \
&& ret=0
;;
(query)
diff --git a/contrib/completions/zoxide.bash b/contrib/completions/zoxide.bash
index 6bc165a6..73dbd45f 100644
--- a/contrib/completions/zoxide.bash
+++ b/contrib/completions/zoxide.bash
@@ -165,7 +165,7 @@ _zoxide() {
return 0
;;
zoxide__init)
- opts="-h -V --no-cmd --cmd --hook --help --version bash elvish fish ksh nushell posix powershell xonsh zsh"
+ opts="-h -V --no-cmd --cmd --hook --help --version bash elvish fish nushell posix powershell xonsh zsh"
if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
return 0
diff --git a/contrib/completions/zoxide.ts b/contrib/completions/zoxide.ts
index 1e987b12..0200591b 100644
--- a/contrib/completions/zoxide.ts
+++ b/contrib/completions/zoxide.ts
@@ -182,7 +182,6 @@ const completion: Fig.Spec = {
"bash",
"elvish",
"fish",
- "ksh",
"nushell",
"posix",
"powershell",
diff --git a/man/man1/zoxide-init.1 b/man/man1/zoxide-init.1
index b637295c..387c3182 100644
--- a/man/man1/zoxide-init.1
+++ b/man/man1/zoxide-init.1
@@ -30,13 +30,6 @@ Add this to the \fBend\fR of your config file (usually
\fBzoxide init fish | source\fR
.fi
.TP
-.B ksh
-Add this to the \fBend\fR of your config file (usually \fB~/.kshrc\fR):
-.sp
-.nf
- \fBeval $(zoxide init ksh)\fR
-.fi
-.TP
.B nushell
Add this to the \fBend\fR of your env file (find it by running
\fB$nu.env-path\fR in Nushell):
diff --git a/src/cmd/cmd.rs b/src/cmd/cmd.rs
index 3b05a60b..61ecbaa2 100644
--- a/src/cmd/cmd.rs
+++ b/src/cmd/cmd.rs
@@ -137,8 +137,8 @@ pub enum InitShell {
Bash,
Elvish,
Fish,
- Ksh,
Nushell,
+ #[clap(alias = "ksh")]
Posix,
Powershell,
Xonsh,
diff --git a/src/cmd/init.rs b/src/cmd/init.rs
index 70bdca04..3f79ed66 100644
--- a/src/cmd/init.rs
+++ b/src/cmd/init.rs
@@ -6,7 +6,7 @@ use rinja::Template;
use crate::cmd::{Init, InitShell, Run};
use crate::config;
use crate::error::BrokenPipeHandler;
-use crate::shell::{Bash, Elvish, Fish, Ksh, Nushell, Opts, Posix, Powershell, Xonsh, Zsh};
+use crate::shell::{Bash, Elvish, Fish, Nushell, Opts, Posix, Powershell, Xonsh, Zsh};
impl Run for Init {
fn run(&self) -> Result<()> {
@@ -19,7 +19,6 @@ impl Run for Init {
InitShell::Bash => Bash(opts).render(),
InitShell::Elvish => Elvish(opts).render(),
InitShell::Fish => Fish(opts).render(),
- InitShell::Ksh => Ksh(opts).render(),
InitShell::Nushell => Nushell(opts).render(),
InitShell::Posix => Posix(opts).render(),
InitShell::Powershell => Powershell(opts).render(),
diff --git a/src/shell.rs b/src/shell.rs
index 10e6235d..721553db 100644
--- a/src/shell.rs
+++ b/src/shell.rs
@@ -26,7 +26,6 @@ macro_rules! make_template {
make_template!(Bash, "bash.txt");
make_template!(Elvish, "elvish.txt");
make_template!(Fish, "fish.txt");
-make_template!(Ksh, "ksh.txt");
make_template!(Nushell, "nushell.txt");
make_template!(Posix, "posix.txt");
make_template!(Powershell, "powershell.txt");
@@ -159,42 +158,6 @@ mod tests {
.stderr("");
}
- #[apply(opts)]
- fn ksh_ksh(cmd: Option<&str>, hook: InitHook, echo: bool, resolve_symlinks: bool) {
- let opts = Opts { cmd, hook, echo, resolve_symlinks };
- let source = Ksh(&opts).render().unwrap();
- Command::new("ksh").args(["-n", "-c", &source]).assert().success().stdout("").stderr("");
- }
-
- #[apply(opts)]
- fn ksh_shellcheck(cmd: Option<&str>, hook: InitHook, echo: bool, resolve_symlinks: bool) {
- let opts = Opts { cmd, hook, echo, resolve_symlinks };
- let source = Ksh(&opts).render().unwrap();
-
- Command::new("shellcheck")
- .args(["--enable=all", "-"])
- .write_stdin(source)
- .assert()
- .success()
- .stdout("")
- .stderr("");
- }
-
- #[apply(opts)]
- fn ksh_shfmt(cmd: Option<&str>, hook: InitHook, echo: bool, resolve_symlinks: bool) {
- let opts = Opts { cmd, hook, echo, resolve_symlinks };
- let mut source = Ksh(&opts).render().unwrap();
- source.push('\n');
-
- Command::new("shfmt")
- .args(["--diff", "--indent=4", "--language-dialect=mksh", "--simplify", "-"])
- .write_stdin(source)
- .assert()
- .success()
- .stdout("")
- .stderr("");
- }
-
#[apply(opts)]
fn nushell_nushell(cmd: Option<&str>, hook: InitHook, echo: bool, resolve_symlinks: bool) {
let opts = Opts { cmd, hook, echo, resolve_symlinks };
diff --git a/templates/ksh.txt b/templates/ksh.txt
deleted file mode 100644
index 2f8fd06d..00000000
--- a/templates/ksh.txt
+++ /dev/null
@@ -1,118 +0,0 @@
-{%- let section = "# =============================================================================\n#" -%}
-{%- let not_configured = "# -- not configured --" -%}
-
-# shellcheck shell=ksh
-
-{{ section }}
-# Utility functions for zoxide.
-#
-
-# pwd based on the value of _ZO_RESOLVE_SYMLINKS.
-__zoxide_pwd() {
-{%- if cfg!(windows) %}
- \command cygpath -w "$(\builtin pwd -P)"
-{%- else if resolve_symlinks %}
- \command pwd -P
-{%- else %}
- \command pwd -L
-{%- endif %}
-}
-
-# cd + custom logic based on the value of _ZO_ECHO.
-__zoxide_cd() {
- # shellcheck disable=SC2164
- \command cd "$@" {%- if echo %} && __zoxide_pwd {%- endif %}
-}
-
-{{ section }}
-# Hook configuration for zoxide.
-#
-
-{% match hook %}
-{%- when InitHook::None -%}
-{{ not_configured }}
-
-{%- when InitHook::Prompt -%}
-# Hook to add new entries to the database.
-__zoxide_hook() {
- \command zoxide add -- "$(__zoxide_pwd || \builtin true)"
-}
-
-# Initialize hook.
-if [[ ${PS1:=} == "${PS1#*\$(__zoxide_hook)}" ]]; then
- PS1="${PS1}\$(__zoxide_hook)"
-fi
-
-{%- when InitHook::Pwd -%}
-# Hook to add new entries to the database.
-__zoxide_hook() {
- __zoxide_retval="$?"
- __zoxide_newpwd="$(__zoxide_pwd)"
- if [[ ${__zoxide_oldpwd:-__zoxide_newpwd} != "${__zoxide_newpwd}" ]]; then
- \command zoxide add -- "${__zoxide_newpwd}"
- __zoxide_oldpwd="${__zoxide_newpwd}"
- fi
- return "${__zoxide_retval}"
-}
-
-# Initialize hook.
-__zoxide_trap="$(\command trap -p DEBUG)"
-if [[ ${__zoxide_trap} != *'__zoxide_hook'* ]]; then
- \command trap "__zoxide_hook;${__zoxide_trap#';'}" DEBUG
-fi
-{%- endmatch %}
-
-{{ section }}
-# When using zoxide with --no-cmd, alias these internal functions as desired.
-#
-
-# Jump to a directory using only keywords.
-__zoxide_z() {
- # shellcheck disable=SC2199
- if (($# == 0)); then
- __zoxide_cd ~
- elif [[ ($# == 1) && $1 == '-' ]]; then
- __zoxide_cd "${OLDPWD}"
- elif [[ ($# == 1) && -d $1 ]]; then
- __zoxide_cd "$1"
- elif [[ ($# == 2) && $1 == '--' ]]; then
- __zoxide_cd "$2"
- else
- # shellcheck disable=SC2312
- __zoxide_result="$(\command zoxide query --exclude "$(__zoxide_pwd)" -- "$@")" &&
- __zoxide_cd "${__zoxide_result}"
- fi
-}
-
-# Jump to a directory using interactive search.
-__zoxide_zi() {
- __zoxide_result="$(\command zoxide query --interactive -- "$@")" && __zoxide_cd "${__zoxide_result}"
-}
-
-{{ section }}
-# Commands for zoxide. Disable these using --no-cmd.
-#
-
-{%- match cmd %}
-{%- when Some with (cmd) %}
-
-\command unalias {{cmd}} >/dev/null 2>&1 || \true
-{{cmd}}() {
- __zoxide_z "$@"
-}
-
-\command unalias {{cmd}}i >/dev/null 2>&1 || \true
-{{cmd}}i() {
- __zoxide_zi "$@"
-}
-
-{%- when None %}
-
-{{ not_configured }}
-
-{%- endmatch %}
-
-{{ section }}
-# To initialize zoxide, add this to your configuration (usually ~/.kshrc):
-#
-# eval "$(zoxide init ksh)"