Podczas uruchamiania skryptów instalacyjnych, na które się skarżyły, napotkałem pewne problemy bad interpreter
.
Zrobiłem więc trywialny przykład, ale nie mogę zrozumieć, na czym polega problem, patrz poniżej.
#!/usr/bin/env bash
echo "hello"
Wykonanie powyższego skryptu powoduje następujący błąd
[root@ech-10-24-130-154 dc-user]# ./junk.sh
bash: ./junk.sh: /usr/bin/env: bad interpreter: No such file or directory
/usr/bin/env
Plik istnieje, patrz poniżej:
[root@ech-10-24-130-154 dc-user]# ls -l /usr/bin/env
lrwxrwxrwx 1 root root 13 Jan 27 04:14 /usr/bin/env -> ../../bin/env
[root@ech-10-24-130-154 dc-user]# ls -l /bin/env
-rwxr-xr-x 1 root root 23832 Jul 16 2014 /bin/env
[root@ech-10-24-130-154 dc-user]#
Jeśli zmienię skrypt, aby używał zwykłego shebang, #!/bin/bash
nie będzie to działać . #!/bin/env bash
działa również.
Czego brakuje w środowisku, aby przenośny shebang mógł działać?
ls -lL /usr/bin/env
zwraca ls: cannot access /usr/bin/env: No such file or directory
więc myślę, że muszę zmienić link symboliczny? Czy mogę to wskazać /bin/env
?
env --version
jest 8.4, a system operacyjny to Red Hat Enterprise Linux Server wersja 6.6.