How to restore a removed /bin/sh file?
I have followed a guide online which requested me to run this command:
sudo cp /opt/local/bin/node /bin/sh
It was a guide for fixing LESS. Instead of fixing it, it only made it worse. I have lost the file.
Is there any way to recover/refetch this file, or could someone upload their sh
file for me?
Run this command to copy /bin/sh from the BaseSystem.dmg on the Recovery HD:
diskutil mount Recovery\ HD &&
hdiutil mount /Volumes/Recovery\ HD/com.apple.recovery.boot/BaseSystem.dmg &&
sudo cp -p /Volumes/OS\ X\ Base\ System/bin/sh /bin/sh
Also see How can I get back a system file after deleting it from my Mac?
/bin/sh
is actually a lot easier to fix if you have read through something like Linux from Scratch as it is usually a symlink on other UNIXes, pointing to a shell, usually /bin/bash
, and occasionally /bin/dash
.
The quick and fix:
sudo ln -sf bash /bin/sh
as it will create a symlink pointing from /bin/sh
to /bin/bash
just like every other UNIX and Linux distribution. You can of course symlink it to any other Bourne-compatible shells you would like to use, including that latest bash-4.3
or even Debian's dash
.