Bash

是否可以定義一個 bash 腳本預設以互動方式執行?

  • February 24, 2020

我已經編寫了一些腳本並將它們儲存在我的~/bin文件夾中。我已經能夠通過在 shell 會話期間呼叫它們的標題來執行它們。但是,它們沒有以互動方式執行(我的意思是,我的~/.bashrc別名沒有載入)。

有沒有辦法將它們標記為預設以互動方式執行?或者我必須source ~/.bashrc在他們內部使用在那裡定義的任何別名?

歡迎其他選擇!

如果您將-i選項添加到 hashbang(s),它將指定腳本以互動模式執行。

#!/bin/bash -i

或者,您可以使用該選項呼叫腳本:

bash -i /path/to/script.sh

採購你.bashrc的不是一個好主意。您可以使用別名創建一個.bash_alias文件,然後在腳本中獲取該文件並使用shopt

就像是:

shopt -s expand_aliases
source ~/.bash_alias

Bash 手冊頁指出:

當 shell 不是互動式的時,別名不會被擴展,除非使用 shopt 設置了 expand_aliases shell 選項(請參閱下面的 SHELL BUILTIN COMMANDS 下對 shopt 的描述)。

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