source 命令構建器
在目前 shell 中執行指令碼(source 檔案 [參數])
開始使用原始碼
## 什麼是來源檔?
`source` 指令(亦寫作 `.`)會在**目前的 shell**中讀取並執行指令碼,而非在子 shell 中執行。這意味著指令碼所定義的任何變數、函數或別名,在指令碼執行完畢後仍然有效。這是重新載入 shell 設定以及載入環境設定檔的標準方式。
## 如何使用
1. **設定檔案路徑**:輸入指令碼的路徑(例如:`~/.bashrc`、`./setup.sh`)。 2. **添加參數**(可選):傳入指令碼所需的參數(例如:`arg1 arg2`)。 3. **複製並執行**:將生成的指令貼上到終端機中。變更會立即在目前的 shell 中生效。
常見選項
### 位置式檔案參數
`source`會將指令碼的路徑作為其第一個參數:`source ~/.bashrc`。
### 位置式參數
其餘的所有參數都會成為指令碼中的`$1`、`$2`……等;`source ./setup.sh dev`可讓`$1=dev`在`setup.sh`內被使用。
### `.`的別名
在 POSIX shell 中,`.`與該命令是相同的:`. ~/.bashrc`與`source ~/.bashrc`也完全一致。在 Bash/Zsh 中為了提升可讀性,可使用`source`;為了確保跨平台相容性,則可使用`.`。
▶直接執行指令碼與從原始檔執行有什麼差異?
執行 \`./script.sh\` 會在另一個子殼中運行它,因此當該子殼結束時,所匯出的變數和函數都會消失。\`source script.sh\` 則在目前的殼中運行它,所以所做的改變(變數、別名、\`cd\`)在它結束後仍會保留。
▶為何 \`source .env\` 不會自動將我的變數載入環境中?
如果您的 \`.env\` 檔案使用了 \`KEY=value\` 但沒有使用 \`export\`,那麼變數雖會在 shell 中設定,卻不會被匯出到子行程。您可以為每一行加上 \`export\` 作為前綴,或者執行 \`set -a; source .env; set +a\` 以自動匯出所有設定值。
▶在編輯了 ~/.bashrc 之後,要如何重新載入我的 shell 設定檔?
執行 \`source ~/.bashrc\`(或 \`. ~/.bashrc\`)。這會在您目前的殼層中重新讀取檔案,如此一來,新的別名、函數和輸出設定便能在不開啟新終端機的情況下立即生效。
如果这个工具对你有帮助,请考虑请我喝杯咖啡。
請幫我買杯咖啡吧。