Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux export 指令詳解:環境變數傳遞與 Shell 層級機制

編輯:Linux 教學

指令語法與核心功能

export [-fnp] [變數名稱[=值]]

export 將 Shell 變數標記為環境變數,使其傳遞給子 Shell 與後續執行的程式。未 export 的變數僅存在於當前 Shell(局部變數),子進程無法存取。

參數說明

參數功能
-f變數名稱指向函數名稱(匯出函數定義)
-n移除環境變數屬性(變數仍存在,但不再傳遞給子進程)
-p列出所有匯出給程式的環境變數

Shell 層級與變數傳遞機制

登入 Shell (父)
   │
   ├─ 子 Shell 1 (執行腳本 A)  ← 可存取 export 的變數
   │
   └─ 子 Shell 2 (執行腳本 B)  ← 可存取 export 的變數
  • 子 Shell 中定義的變數不會回傳給父 Shell。
  • export VAR=value 等同 VAR=value; export VAR。
  • 環境變數生命週期:僅限目前登入 Session(重開終端機失效)。

實戰範例

基本設定與驗證

# 設定並匯出
export PKG_PATH=ftp://example.com/packages

# 驗證
echo $PKG_PATH

# 查看所有環境變數
export -p

編譯安裝 PHP 擴展實戰

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 vs source(.)關鍵差異

特性exportsource / .
作用對象變數/函數整支腳本檔案
進程關係父→子傳遞當前 Shell 直接執行(不建立子進程)
變數留存子進程結束後消失變數留在當前 Shell
典型用途編譯參數、執行環境設定重新載入 .bashrc、.profile

source 實戰:自動化核心編譯流程

# 建立 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 生效。

Copyright © Windows教程網 All Rights Reserved