為實驗而簡化的腳本檔案:
#!/bin/sh
if test -f /home/vl/docker-test/envvars; then . /home/vl/docker-test/envvars; fi
envvars 檔案內容:
export APACHE_RUN_USER=www-data
運行腳本后沒有任何反應,沒有輸出,沒有錯誤。檢查 env 是否包含來自 envvars 的變數,不,它沒有:
$ env | grep -i apache
輸出為空。
但:
$ if test -f /home/vl/docker-test/envvars; then . /home/vl/docker-test/envvars; fi
$ env | grep -i apache
APACHE_RUN_USER=www-data
我在腳本中做錯了什么?
uj5u.com熱心網友回復:
.適用于當前運行環境。在第一種情況下,這就是腳本(腳本完成后消失)。在第二種情況下,它是外殼。如果您希望腳本影響它運行的 shell,那么您需要將.它放入 shell,而不是作為腳本運行。
因此,如果您的腳本是bring-in-vars,那么您目前正在做這樣的事情(作為孩子運行):
./bring-in-vars
而且您需要這樣做(將其采購到當前的外殼中):
. ./bring-in-vars
孩子們無法通過設計來修改他們的父母。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/451689.html
