Skip to content

Instantly share code, notes, and snippets.

Created February 21, 2014 07:25
  • Star 40 You must be signed in to star a gist
  • Fork 13 You must be signed in to fork a gist
Star You must be signed in to star a gist
What would you like to do?
Running GNU coreutils via Homebrew on your Mac? Here's a one-liner to get the manpages working!
# Short of learning how to actually configure OSX, here's a hacky way to use
# GNU manpages for programs that are GNU ones, and fallback to OSX manpages otherwise
alias man='_() { echo $1; man -M $(brew --prefix)/opt/coreutils/libexec/gnuman $1 1>/dev/null 2>&1; if [ "$?" -eq 0 ]; then man -M $(brew --prefix)/opt/coreutils/libexec/gnuman $1; else man $1; fi }; _'
Copy link

Follow an article like this describing how to use Homebrew to setup GNU coreutils et al on your Mac.

Then when you want to spend less than a minute getting the manpages to work with both your new GNU programs and your Mac programs you still want to be able to use (like mdfind), paste this gist in your ~/.profile and away you go!

Copy link

Thanks for this solution!

Copy link

Additionally, if one wants to make it available system-wide, one could add the lines to
Where /usr/libexec/path_helper would include them.

    $> PA1="$(brew --prefix coreutil)/libexec/" ;
    $> : ; # expand slashes (for sed use)
    $> BINPA ="${PA1//\//\\/}gnubin" ;
    $> MANPA ="${PA1//\//\\/}gnuman" ;
    $> : ; # put as first line
    $> sudo sed -i'' -e '1s/^/'"${BINPA}"'\n/' /etc/paths ;
    $> sudo sed -i'' -e '1s/^/'"${MANPA}"'\n/' /etc/manpaths ;

Copy link

StrikeW commented Jan 24, 2015

This solution makes the [section] argument for man fail to work.
man 2 read can not find the man page for read in section 2.

Copy link

Not one to settle for hacky work-arounds, I did a bit of googling and eventually found this solution to work for adding the gnu manpages:

  1. Open the file /etc/man.conf
  2. Add a line:
MANPATH_MAP /usr/local/opt/coreutils/libexec/gnubin /usr/local/opt/coreutils/libexec/gnuman

Hope that helps!

Copy link

Strange bug for me. Once i use man ... sudo is aliased to that function.

screen shot 2016-02-15 at 5 14 27 pm

Copy link

tasmo commented Feb 24, 2016

@JacobDorman Do you use oh-my-zsh or prezto? There is an alias for sudo(!) which causes this failure. So try to comment out the line alias _='sudo' or add a line with unalias _ before the man alias.

Copy link

tasmo commented Feb 24, 2016

The alias is not working with bash.

Copy link

@tasmo Ahh so there is. I never use that. unalias _ fixes the issue.

Copy link

OJFord commented Oct 8, 2016

What's wrong with just putting /usr/local/opt/coreutils/libexec/gnuman at the front of $MANPATH?

Copy link

SystemDisc commented Jan 28, 2017

I have the same question as @OJFord. Why not just export MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"?

Copy link

si9ma commented Feb 3, 2019

man section will not work, use $@ instead of $1

alias man='_() { echo $@; man -M $(brew --prefix)/opt/coreutils/libexec/gnuman $@ 1>/dev/null 2>&1;  if [ "$?" -eq 0 ]; then man -M $(brew --prefix)/opt/coreutils/libexec/gnuman $@; else man $@; fi }; _'

Copy link

This man hack command now not working in macOS 12.3.1 .. when i put this in my alias file and try to type man it stuck on "ma" only.. shall we have new workaround

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment