86

I tried to use sha256sum in High Sierra; I attempted to install it with MacPorts, as:

sudo port install sha256sum

It did not work.

What to do?

Jeff Schaller
  • 67,283
  • 35
  • 116
  • 255
Rui F Ribeiro
  • 56,709
  • 26
  • 150
  • 232

5 Answers5

148

The CoreUtils package is also published as a Brew formulae. So if you have Brew installed you can also just run:

brew install coreutils

Then add PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH" to ~/.bashrc, run source ~/.bashrc and you're done.

Mig82
  • 1,580
  • Congrats on your first answer in U&L. I prefer MacPorts to Brew, but yes, it is a viable alternative. – Rui F Ribeiro Nov 27 '18 at 11:48
  • 5
    This should be the accepted answer! – Milkncookiez May 22 '19 at 11:46
  • 3
    @Milkncokiez If someone manages to convince me why a macports question ought to have as a correct answer a brew solution I am all ears. – Rui F Ribeiro Aug 07 '19 at 16:02
  • 1
    @RuiFRibeiro the OP didn't ask how to do get sha256sum using MacPorts specifically, they just said they attempted to get it using MacPorts. I found both answers very useful. – krookedking Jul 01 '20 at 16:39
  • @krookedking The question is tagged Macports, and I am the OP. ;-P Both answers are welcome and useful, it was just a tongue and cheek answer to a particular comment above. – Rui F Ribeiro Jul 01 '20 at 16:48
  • Note that after brew install coreutils installation you will get a message like Caveats: Commands also provided by macOS and the commands dir, dircolors, vdir have been installed with the prefix "g". – joseluisq Feb 19 '23 at 21:11
  • Looks like it is now installed into /opt/homebrew/bin. – Max Waterman Jun 20 '23 at 04:46
53

After investigating a little, I found a ticket in an unrelated software in GitHub sha256sum command is missing in MacOSX , with several solutions:

  • installing coreutils

    sudo port install coreutils
    

    It installs sha256sum at /opt/local/libexec/gnubin/sha256sum

  • As another possible solution, using openssl:

function sha256sum() { openssl sha256 "$@" | awk '{print $2}'; }
  • As yet another one, using the shasumcommand native to MacOS:
function sha256sum() { shasum -a 256 "$@" ; } && export -f sha256sum
Rui F Ribeiro
  • 56,709
  • 26
  • 150
  • 232
14

If you just need a CLI command, simply

shasum -a 256 <file>

solves the problem. It is not necessary to install coreutils.

This is mentioned, though not prominently visible, in the comment to this question and also in Rui F Ribeiro's answer.

6

Supplemental Answer to Mig82's, whose answer handles the g-prefix for all executables in coreutils. I offer a tightly-scoped solution.

After coreutils installing with

brew install coreutils

ls /usr/local/bin/gsha* will list the g-prefixed executables:

  • /usr/local/bin/gsha1sum
  • /usr/local/bin/gsha224sum
  • /usr/local/bin/gsha256sum
  • /usr/local/bin/gsha384sum
  • /usr/local/bin/gsha512sum

The solution is to create symbolic links to the ones you want using non-prefixed names (handling all carries the risk of breaking some programs that rely on BSD executables)

Example

shaarray=(\
/usr/local/bin/gsha1sum
/usr/local/bin/gsha224sum
/usr/local/bin/gsha256sum
/usr/local/bin/gsha384sum
/usr/local/bin/gsha512sum
)
function installsha() {
  for i in "${shaarray[@]}"
  do
    printf "$i\n" | perl -pe 'printf $_; s/gsha/sha/' | xargs -n 2 ln -s
  done
}
Jonathan Komar
  • 6,424
  • 7
  • 35
  • 53
-1

Linux Command (sha256sums)

If you're looking for an alternative to this

sha256sum --check SHA256SUMS

MacOS Command (shasum)

Then use this instead on MacOS

shasum --algorithm 256 --check SHA256SUMS
Michael Altfield
  • 322
  • 4
  • 15