簡體   English   中英

將環境變量傳遞到啟動的流程bash腳本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM