Shell-Script
從腳本文件呼叫 Bash 函式失敗,而從終端呼叫成功
在帶有 Bash 的 Ubuntu 16.04 中,我創建了一個文件
$HOME/ulcwe/software_internal.sh
,其中包含一個rse()
沒有呼叫的函式。該文件來源於~/.bashrc
(它自己來源於),我可以rse
從終端的任何地方呼叫,它會執行而不會出錯。然而我試圖執行這個包含第 36 行呼叫的腳本文件,但我收到了這個錯誤:
rse
第 36 行:rse:找不到命令
為什麼該函式在手動呼叫(
rse
在 Bash 中鍵入和執行)中成功呼叫,但不是從 Bash 腳本中呼叫,我如何從腳本中成功呼叫它?
您必須確保該函式對腳本可用。您可以通過兩種方式做到這一點:
source
包含函式定義的文件,或export
呼叫腳本之前的函式(export -f rse
將導出函式)。函式,就像 shell 變數一樣,不是腳本繼承的環境的一部分。必須導出 Shell 變數以便它們成為環境變數,並且
bash
同樣可以導出函式。導出的函式不能被任何程序呼叫,只能被其他
bash
腳本呼叫。