エラーメッセージを説明してください。

エラーメッセージを説明してください。

私のスクリプトにはという関数がありますmessages。 Linux Mintで書いて問題なく実行しましたが、Debianバスターステーションに移動したときの機能は/usr/bin/messages

以下を呼び出す起動スクリプトがありますmessages

起動スクリプト

# call to messages script
. messages

情報

messages() {
  # reformat the arguments and return them
}

後でスクリプトを開始

messages "This is a message"

投げるもの

./startup_script: line 35: .: /usr/bin/messages: cannot execute binary file
messages: could not open mailbox `/path/to/my/script/<string passed to my function>': No such file or directory

/usr/bin/messagesだから私の代わりに呼び出される関数に関連するエラーがたくさんあります。

を追加した後、関連するtype messages "This is a message"出力は次のようになります。

messages is /usr/bin/messages

関数の名前を変更することもできますが、この状況を処理するより良い方法があるかもしれません。

システムバイナリを無視し、独自の機能を使用するようにスクリプトにどのように指示しますか?


¹この関数は複数のスクリプトで複数回呼び出されるため、名前を変更するだけでは最も簡単なオプションではありません。

ベストアンサー1

仕組み. file:

<スラッシュ>が含まれていない場合、fileシェルは指定された検索パスを使用してPATHファイルを含むディレクトリを見つけます。

この行動はPOSIXで指定

あなたの最初の間違いは

./startup_script: line 35: .: /usr/bin/messages: cannot execute binary file

電話をかけるときの状況は似ています. echo

-bash: .: /bin/echo: cannot execute binary file

バイナリファイルのソースを取得しようとしています/usr/bin/messages。実際、関数を定義するファイルにはソースがまったくなく、現在のスクリプトには関数が定義されていません。これは、後でmessagesまだ/usr/bin/messages機能ではないことを意味します。

関連行は、または. ./messages. /full/path/to/messagesパスなど)でなければなりません。あなたのバイナリファイルではないファイル)。

おすすめ記事