Bash

為什麼 MYVAR=something 不會出現在 printenv 中?這與 getenv 函式有關嗎?

  • February 14, 2021

我試圖理解為什麼來自 stlib.h 的 getenvPATH我的自定義定義的變數(如ANDROID_PRODUCT_OUT. 我認為這與此有關:

ANDROID_PRODUCT_OUT=test
printenv | grep ANDR
#nothing

為什麼我定義的變數不會出現在printenv?這是否與為什麼getenv("ANDROID_PRODUCT_OUT")==NULL即使變數是在執行二進製文件的同一 shell 中定義的原因有關?

通過寫作

ANDROID_PRODUCT_OUT=test

ANDROID_PRODUCT_OUT您只需在目前 shell 中設置 shell 變數。如果你想讓它成為一個環境變數,可用於分叉程序(即,你從該 shell 執行的任何命令),你需要導出該變數:

export ANDROID_PRODUCT_OUT

您還可以在一行中設置變數並將其標記為自動導出:

export ANDROID_PRODUCT_OUT=test
printenv | grep ANDR # outputs: ANDROID_PRODUCT_OUT=test

如果您不想為所有分叉程序自動導出變數,而只想將其提供給./myprogram您要執行的特定程序(例如,),您可以這樣做:

ANDROID_PRODUCT_OUT=test ./myprogram

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