彼らが文句を言ういくつかのインストールスクリプトを実行する際にいくつかの問題がありますbad interpreter
。
だから簡単な例を作ってみましたが、何が問題なのかわかりません。以下を参照してください。
#!/usr/bin/env bash
echo "hello"
上記のスクリプトを実行すると、次のエラーが発生します。
[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
以下のようにファイルが存在します。
[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]#
通常のshebangを使用するようにスクリプトを変更すると、#!/bin/bash
問題なく動作します。#!/bin/env bash
また動作します。
ポータブルシェバンを操作するために環境に欠けているものは何ですか?
ls -lL /usr/bin/env
返されるls: cannot access /usr/bin/env: No such file or directory
ので、シンボリックリンクを変更する必要がありますか?アドバイスをお願いしますか/bin/env
?
env --version
8.4で、オペレーティングシステムはRed Hat Enterprise Linux Serverバージョン6.6です。
ベストアンサー1
ls -lL /usr/bin/env
シンボリックリンクが失われたことを示します。これは、shebangラインが機能しない理由を説明します。カーネルがぶら下がっているシンボリックリンクを実行しようとしますが、明らかに失敗します。
/usr/bin/env -> ../../bin/env
/usr
/usr/bin
とが両方の物理ディレクトリ(シンボリックリンクではない)の場合、これは正しいです。明らかに、これはあなたのコンピュータには当てはまりません。おそらく/usr
シンボリックリンクですか? (明らかにこれはシンボリックリンクではありません/
。そうしないと、シンボリックリンクではなく/usr/bin/env
同じファイルを使用します/bin/env
。)
シンボリックリンクを変更する必要があります。絶対リンクで作成できます。
sudo ln -snf /bin/env /usr/bin/env
相対リンクで作成できますが、そうする場合は正しいことを確認してください。シンボリックリンクを作成する前にに切り替えて/usr/bin
実行し、ls -l relative/path/to/bin/env
正しく設定されていることを確認してください。
これはデフォルトのRHEL設定ではないため、ローカルで一部を変更する必要があります。自分が行ったことと、他の同様の問題が発生するかどうかを確認してください。