Shell-Script

從腳本文件呼叫 Bash 函式失敗,而從終端呼叫成功

  • May 20, 2020

在帶有 Bash 的 Ubuntu 16.04 中,我創建了一個文件$HOME/ulcwe/software_internal.sh,其中包含一個rse()沒有呼叫的函式。該文件來源於~/.bashrc(它自己來源於),我可以rse從終端的任何地方呼叫,它會執行而不會出錯。

然而我試圖執行這個包含第 36 行呼叫的腳本文件,但我收到了這個錯誤:rse

第 36 行:rse:找不到命令

為什麼該函式在手動呼叫(rse在 Bash 中鍵入和執行)中成功呼叫,但不是從 Bash 腳本中呼叫,我如何從腳本中成功呼叫它?

您必須確保該函式對腳本可用。您可以通過兩種方式做到這一點:

  1. source包含函式定義的文件,或
  2. export呼叫腳本之前的函式(export -f rse將導出函式)。

函式,就像 shell 變數一樣,不是腳本繼承的環境的一部分。必須導出 Shell 變數以便它們成為環境變數,並且bash同樣可以導出函式。

導出的函式不能被任何程序呼叫,只能被其他bash腳本呼叫。

引用自:https://unix.stackexchange.com/questions/428055