Wenn es sich um ein Skript handelt, rufen Sie das Skript einfach als auf
bash scriptname.sh
Links müssen nicht geändert werden.
Für kompilierte ausführbare Dateien können Sie chroot Route gehen:
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
Und dann führen Sie Ihr Programm oder sudo chroot rootfs /yourprogram
In der Praxis gibt es jedoch keinen Grund, warum Sie nicht /bin/bashals Symlink zu verwenden können /bin/sh. Tatsächlich verwendete Ubuntu vor Version 6.10/bin/bash as /bin/shund wechselte dann aufgrund /bin/sheiner viel schnelleren und schlankeren Implementierung von POSIX /bin/sh(dh es entspricht dem POSIX-Standard für das Verhalten von Unix-ähnlichen Betriebssystem-Dienstprogrammen und Betriebssystemen und einige ihrer Interna implementieren) und aus Gründen der Portabilität. Ich empfehle dringend, auch Gilles 'Antwort zu lesen, um historische Notizen darüber zu erhalten, wie es dazu /bin/dashkam. Aus Gründen der Kompatibilität werden Skripte, die für die dashVerwendung von POSIX-Funktionen geschrieben wurden bash, als Standard-Shell ausgeführt. Normalerweise ist es umgekehrt, was Probleme verursacht -bashverfügt über Funktionen, die von nicht benötigt werden /bin/sh, wie die <<<Syntax oder Arrays.
Darüber hinaus wurde der betreffende Befehl wahrscheinlich unter Berücksichtigung von RHEL oder CentOS geschrieben, das /bin/bashals Symlink zu verwendet /bin/shwird. Es schlägt zwei Dinge vor: Sie zielen wahrscheinlich auf ein bestimmtes Betriebssystem ab und haben die POSIX-Prinzipien nicht eingehalten. In diesem Fall ist es auch eine gute Idee, zu überprüfen, welche anderen Dinge der Befehl erfordert, da Sie möglicherweise mehr Probleme haben, als nur eine erneute Verknüpfung vorzunehmen, wenn er wirklich für ein anderes Betriebssystem geschrieben wurde /bin/sh.