![](/img/trans.png)
[英]How to use ~/.bash_profile environment variables when using “Run Script” in “Build Phases” for XCode 6.1?
[英]Passing the environment variables to the launched process bash script
在linux下,我有一個bash腳本,可以啟動c ++程序二進制文件。 我需要做的是在該腳本中設置一個環境變量,並使用getenv
在啟動的C ++程序中訪問該變量。
這是腳本的代碼
#!/bin/bash
export SAMPLE_VAR=1
./c++_binary
C ++程序:
char * env_var = getenv("SAMPLE_VAR");
if (env_var != NULL) printf("var set\n");
但是,這似乎不起作用。 據我了解,當我們執行腳本時,它將在一個新的子shell中運行並在其中設置環境變量SAMPLE_BAR,但是C ++二進制文件也在同一個子shell中啟動(可能是我錯了),因此應該有權訪問SAMPLE_VAR。 我什至嘗試編寫一個單獨的腳本來設置env變量,在主腳本中我將該腳本稱為source env_var_set.sh
無效。
是否可以通過這種方式將新設置的環境變量傳遞給程序? 謝謝
由於功能請求將評論標記為答案的請求仍然被拒絕,因此我將上述解決方案復制到此處。
對不起,我是錯字,我的錯誤是,在腳本內部,我用“ sudo”啟動了二進制文件,該文件在root的env中運行,並且在那里沒有設置變量。 刪除了sudo並正常工作。 對困惑感到抱歉。 干杯。 –阿卜杜拉
首先,您需要獲取shell腳本的source
,以便設置env
變量。 其次在getenv
調用中包含引號。
char * env_var = getenv("SAMPLE_VAR");
if (env_var != NULL) printf("var set\n");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.