From dbd228cc75d29cbc46445f22d8f2c6285fc40021 Mon Sep 17 00:00:00 2001 From: Mahmoud Al-Qudsi Date: Wed, 26 Sep 2018 12:36:57 -0500 Subject: [PATCH] Add `hash` function for compatibility with sh/bash --- CHANGELOG.md | 1 + share/functions/hash.fish | 10 ++++++++++ 2 files changed, 11 insertions(+) create mode 100644 share/functions/hash.fish diff --git a/CHANGELOG.md b/CHANGELOG.md index d812c21c2..32cb43678 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -68,6 +68,7 @@ fish 3.0 is a major release which brings with it both improvements in functional - `test` and `[` now support floating point values in numeric comparisons. - Autosuggestions try to avoid arguments that are already present in the command line. - Variables may be used inside commands (#154). +- A `hash` function has been added for compatibiility with `sh` and `bash` ## Other significant changes - Command substitution output is now limited to 10 MB by default (#3822). diff --git a/share/functions/hash.fish b/share/functions/hash.fish new file mode 100644 index 000000000..d449a4725 --- /dev/null +++ b/share/functions/hash.fish @@ -0,0 +1,10 @@ +# Under (ba)sh, `hash` acts like a caching `which`, but it doesn't print +# anything on success. Its return code is used to determine success vs failure. +function hash + if not set -q argv[1] + echo "Usage: hash FILE" >&2 + return 1 + end + which $argv[1] 2>/dev/null 1>/dev/null + or printf "%s: not found!\n" $argv[1] >&2 && return 2 # ENOENT +end