export [-fnp] [變數名稱[=值]]
export 將 Shell 變數標記為環境變數,使其傳遞給子 Shell 與後續執行的程式。未 export 的變數僅存在於當前 Shell(局部變數),子進程無法存取。
| 參數 | 功能 |
|---|---|
-f | 變數名稱指向函數名稱(匯出函數定義) |
-n | 移除環境變數屬性(變數仍存在,但不再傳遞給子進程) |
-p | 列出所有匯出給程式的環境變數 |
登入 Shell (父)
│
├─ 子 Shell 1 (執行腳本 A) ← 可存取 export 的變數
│
└─ 子 Shell 2 (執行腳本 B) ← 可存取 export 的變數
export VAR=value 等同 VAR=value; export VAR。# 設定並匯出
export PKG_PATH=ftp://example.com/packages
# 驗證
echo $PKG_PATH
# 查看所有環境變數
export -p
cd memcache-2.1.0
export PHP_PREFIX=/usr/local/server/php
$PHP_PREFIX/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config
make && make install
此處 PHP_PREFIX 需傳遞給 phpize、configure 等子進程,故必須 export。
| 特性 | export | source / . |
|---|---|---|
| 作用對象 | 變數/函數 | 整支腳本檔案 |
| 進程關係 | 父→子傳遞 | 當前 Shell 直接執行(不建立子進程) |
| 變數留存 | 子進程結束後消失 | 變數留在當前 Shell |
| 典型用途 | 編譯參數、執行環境設定 | 重新載入 .bashrc、.profile |
# 建立 make_command 檔案
cat > make_command << 'EOF'
make mrproper &&
make menuconfig &&
make dep &&
make clean &&
make bzImage &&
make modules &&
make modules_install &&
cp arch/i386/boot/bzImage /boot/vmlinuz_new &&
cp System.map /boot &&
vi /etc/lilo.conf &&
lilo -v
EOF
# 執行(當前 Shell 環境)
source make_command
&& 確保前一指令成功才執行下一指令,避免錯誤級聯。
將 export 指令寫入 ~/.bashrc(互動式 Shell)或 ~/.profile(登入 Shell),重新登入或 source ~/.bashrc 生效。