1
0
mirror of https://github.com/ohmyzsh/ohmyzsh.git synced 2024-12-11 23:53:43 +08:00
ohmyzsh/plugins/gnu-utils
2023-02-26 15:44:18 +01:00
..
gnu-utils.plugin.zsh fix(gnu-utils): reset ls alias to use GNU-based --color argument (#11527) 2023-02-26 15:44:18 +01:00
README.md gnu-utils: add README, simplify plugin 2019-12-27 00:04:40 +01:00

gnu-utils plugin

This plugin binds GNU coreutils to their default names, so that you don't have
to call them using their prefixed name, which starts with g. This is useful
in systems which don't have GNU coreutils installed by default, mainly macOS
or FreeBSD, which use BSD coreutils.

To use it, add gnu-utils to the plugins array in your zshrc file:

plugins=(... gnu-utils)

The plugin works by changing the path that the command hash points to, so
instead of ls pointing to /bin/ls, it points to wherever gls is
installed.

Since hash -rf or rehash refreshes the command hashes, it also wraps
hash and rehash so that the coreutils binding is always done again
after calling these two commands.

Look at the source code of the plugin to see which GNU coreutils are tried
to rebind. Open an issue if there are some missing.

Other methods

The plugin also documents two other ways to do this:

  1. Using a function wrapper, such that, for example, there exists a function
    named ls which calls gls instead. Since functions have a higher preference
    than commands, this ends up calling the GNU coreutil. It has also a higher
    preference over shell builtins (gecho is called instead of the builtin echo).

  2. Using an alias. This has an even higher preference than functions, but they
    could be overridden because of a user setting.

Author