Якщо це сценарій, просто зателефонуйте як сценарій
bash scriptname.sh
Не потрібно змінювати посилання взагалі.
Для складеного виконуваного файлу ви можете піти chroot route:
mkdir rootfs
cp -a /usr rootfs/
cp -a /lib rootfs/
cp -a /lib64 rootfs/
cp /bin/bash rootfs/bin/sh
cp yourprogram rootfs/
sudo chroot rootfs sh
А потім запустіть свою програму або sudo chroot rootfs /yourprogram
Однак на практиці немає причин, чому ви не можете використовувати його /bin/bash
як символьне посилання /bin/sh
. Насправді, до версії 6.10 Ubuntu використовував /bin/bash
як /bin/sh
, а потім вони перейшли через /bin/sh
набагато швидшу, більш швидку реалізацію POSIX /bin/sh
(тобто він дотримується стандарту POSIX для того, як повинні поводитись утиліти та ОС ОС, схожі на Unix, і реалізовувати деякі їх внутрішні ресурси) і через причини переносимості. Я настійно рекомендую прочитати відповідь Гілла , а також історичні записки про те, як /bin/dash
виникло. Що стосується сумісності, то сценарії, написані для dash
використання POSIX-функцій, працюватимуть із bash
оболонкою за замовчуванням. Зазвичай проблеми викликають навпаки -bash
має функції, які не потрібні /bin/sh
, як-от <<<
синтаксис або масиви.
Крім того, відповідна команда, ймовірно, написана з урахуванням RHEL або CentOS, яка використовує /bin/bash
як симпосилання до /bin/sh
, пропонує дві речі: вони, ймовірно, орієнтовані на конкретну ОС і не дотримуються принципів POSIX. У цьому випадку також було б непогано перевірити, що ще вимагає команда, оскільки якщо це дійсно написано з іншою ОС, ви можете зіткнутися з більшими проблемами, ніж просто повторне посилання /bin/sh
.