#!/usr/bin/env bashが私のシステムで動作しないのはなぜですか?

#!/usr/bin/env bashが私のシステムで動作しないのはなぜですか?

彼らが文句を言ういくつかのインストールスクリプトを実行する際にいくつかの問題があります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 --version8.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設定ではないため、ローカルで一部を変更する必要があります。自分が行ったことと、他の同様の問題が発生するかどうかを確認してください。

おすすめ記事