让一齐随风 發表於 2023-9-29 00:00:00

Linux下查看控制环境变量的方法

<p>
        <strong>查看环境变量</strong></p>
<p>
        查看某一环境变量:比如我们需要查看HOME这个环境变量,我们可以在shell下直接输入echo $HOME,我们可以把所有的环境变量和环境变量的值都打印出来</p>
<p>
        <strong>打印环境变量</strong></p>
<p>
        libc中定义的全局变量environ指向环境变量表,environ没有包含在任何头文件中,所以 在使用时 要用extern声明。</p>
<p>
        下面提供了一个程序打印环境变量</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlightercpp" id="highlighter_28309">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                        <div class="line number9 index8 alt2">
                                                                9</div>
                                                        <div class="line number10 index9 alt1">
                                                                10</div>
                                                        <div class="line number11 index10 alt2">
                                                                11</div>
                                                        <div class="line number12 index11 alt1">
                                                                12</div>
                                                        <div class="line number13 index12 alt2">
                                                                13</div>
                                                        <div class="line number14 index13 alt1">
                                                                14</div>
                                                        <div class="line number15 index14 alt2">
                                                                15</div>
                                                        <div class="line number16 index15 alt1">
                                                                16</div>
                                                        <div class="line number17 index16 alt2">
                                                                17</div>
                                                        <div class="line number18 index17 alt1">
                                                                18</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="cpp preprocessor">#include&lt;stdio.h&gt;</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="cpp spaces"> </code><code class="cpp color1 bold">int</code> <code class="cpp plain">main()</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="cpp spaces"> </code><code class="cpp plain">{</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="cpp spaces">   </code><code class="cpp comments">//libc中定义的全局变量environ指向环境变量表,environ没有包含在任何头⽂文件中,所以</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="cpp spaces">   </code><code class="cpp comments">//在使⽤用时 要⽤用extern声明。</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="cpp spaces">   </code><code class="cpp keyword bold">extern</code> <code class="cpp color1 bold">char</code><code class="cpp plain">** environ;</code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="cpp spaces"> </code><code class="cpp comments">//  while(environ)</code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                        <code class="cpp spaces"> </code><code class="cpp comments">//  {</code>
</div>
                                                                <div class="line number9 index8 alt2">
                                                                        <code class="cpp spaces"> </code><code class="cpp comments">//   printf("%s\n",*environ++);</code>
</div>
                                                                <div class="line number10 index9 alt1">
                                                                        <code class="cpp spaces"> </code><code class="cpp comments">//  }</code>
</div>
                                                                <div class="line number11 index10 alt2">
                                                                        <code class="cpp spaces"> </code><code class="cpp comments">//  printf("hah");</code>
</div>
                                                                <div class="line number12 index11 alt1">
                                                                        <code class="cpp spaces">   </code><code class="cpp color1 bold">int</code> <code class="cpp plain">i = 0;</code>
</div>
                                                                <div class="line number13 index12 alt2">
                                                                        <code class="cpp spaces">   </code><code class="cpp keyword bold">for</code><code class="cpp plain">(i = 0;environ!=NULL;i++)</code>
</div>
                                                                <div class="line number14 index13 alt1">
                                                                        <code class="cpp spaces">   </code><code class="cpp plain">{</code>
</div>
                                                                <div class="line number15 index14 alt2">
                                                                        <code class="cpp spaces">     </code><code class="cpp functions bold">printf</code><code class="cpp plain">(</code><code class="cpp string">"%s\n"</code><code class="cpp plain">,environ);</code>
</div>
                                                                <div class="line number16 index15 alt1">
                                                                        <code class="cpp spaces">   </code><code class="cpp plain">}</code>
</div>
                                                                <div class="line number17 index16 alt2">
                                                                        <code class="cpp spaces">   </code><code class="cpp keyword bold">return</code> <code class="cpp plain">0;</code>
</div>
                                                                <div class="line number18 index17 alt1">
                                                                        <code class="cpp spaces"> </code><code class="cpp plain">}</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        控制环境变量接口<code>getenv</code>,<code>setenv</code>,<code>unsetenv</code></p>
<p>
        <strong>getenv()函数</strong></p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlightercpp" id="highlighter_343982">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="cpp preprocessor">#include &lt;stdlib.h&gt;</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="cpp color1 bold">char</code> <code class="cpp plain">*</code><code class="cpp functions bold">getenv</code><code class="cpp plain">(</code><code class="cpp keyword bold">const</code> <code class="cpp color1 bold">char</code> <code class="cpp plain">*name);</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        getenv()功能的搜索环境列表找到环境变量名称,并返回一个 指向相应值串的指针。如果没有找到则返回NULL</p>
<p>
        <strong>setenv()函数和unsetenv</strong></p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlightercpp" id="highlighter_734149">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="cpp preprocessor">#include &lt;stdlib.h&gt;</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="cpp color1 bold">int</code> <code class="cpp plain">setenv(</code><code class="cpp keyword bold">const</code> <code class="cpp color1 bold">char</code> <code class="cpp plain">*name, </code><code class="cpp keyword bold">const</code> <code class="cpp color1 bold">char</code> <code class="cpp plain">*value, </code><code class="cpp color1 bold">int</code> <code class="cpp plain">overwrite);</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="cpp color1 bold">int</code> <code class="cpp plain">unsetenv(</code><code class="cpp keyword bold">const</code> <code class="cpp color1 bold">char</code> <code class="cpp plain">*name);</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        setenv()是设置环境变量,如果成功则返回0,如果没有成功则返回非0</p>
<p>
        unsetenv()是删除一个环境变量</p>
<p>
        下面提供一段程序大家可以自行的测试一下</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlightercpp" id="highlighter_421197">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                        <div class="line number9 index8 alt2">
                                                                9</div>
                                                        <div class="line number10 index9 alt1">
                                                                10</div>
                                                        <div class="line number11 index10 alt2">
                                                                11</div>
                                                        <div class="line number12 index11 alt1">
                                                                12</div>
                                                        <div class="line number13 index12 alt2">
                                                                13</div>
                                                        <div class="line number14 index13 alt1">
                                                                14</div>
                                                        <div class="line number15 index14 alt2">
                                                                15</div>
                                                        <div class="line number16 index15 alt1">
                                                                16</div>
                                                        <div class="line number17 index16 alt2">
                                                                17</div>
                                                        <div class="line number18 index17 alt1">
                                                                18</div>
                                                        <div class="line number19 index18 alt2">
                                                                19</div>
                                                        <div class="line number20 index19 alt1">
                                                                20</div>
                                                        <div class="line number21 index20 alt2">
                                                                21</div>
                                                        <div class="line number22 index21 alt1">
                                                                22</div>
                                                        <div class="line number23 index22 alt2">
                                                                23</div>
                                                        <div class="line number24 index23 alt1">
                                                                24</div>
                                                        <div class="line number25 index24 alt2">
                                                                25</div>
                                                        <div class="line number26 index25 alt1">
                                                                26</div>
                                                        <div class="line number27 index26 alt2">
                                                                27</div>
                                                        <div class="line number28 index27 alt1">
                                                                28</div>
                                                        <div class="line number29 index28 alt2">
                                                                29</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="cpp preprocessor">#include &lt;stdio.h&gt; </code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="cpp preprocessor">#include &lt;stdlib.h&gt; </code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="cpp preprocessor">#include &lt;string.h&gt; </code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                         </div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="cpp color1 bold">int</code> <code class="cpp plain">main(</code><code class="cpp keyword bold">void</code><code class="cpp plain">) </code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="cpp plain">{ </code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="cpp spaces">  </code><code class="cpp color1 bold">char</code><code class="cpp plain">* val; </code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                        <code class="cpp spaces">  </code><code class="cpp keyword bold">const</code> <code class="cpp color1 bold">char</code><code class="cpp plain">* name =</code><code class="cpp string">"ABC"</code><code class="cpp plain">; </code>
</div>
                                                                <div class="line number9 index8 alt2">
                                                                         </div>
                                                                <div class="line number10 index9 alt1">
                                                                        <code class="cpp spaces">  </code><code class="cpp comments">//获取ABC环境变量的值 </code>
</div>
                                                                <div class="line number11 index10 alt2">
                                                                        <code class="cpp spaces">  </code><code class="cpp plain">val = </code><code class="cpp functions bold">getenv</code><code class="cpp plain">(name); </code>
</div>
                                                                <div class="line number12 index11 alt1">
                                                                        <code class="cpp spaces">  </code><code class="cpp functions bold">printf</code><code class="cpp plain">(</code><code class="cpp string">"No.1 %s=%s\n"</code><code class="cpp plain">, name, val); </code>
</div>
                                                                <div class="line number13 index12 alt2">
                                                                         </div>
                                                                <div class="line number14 index13 alt1">
                                                                        <code class="cpp spaces">  </code><code class="cpp comments">//覆盖写入环境变量 </code>
</div>
                                                                <div class="line number15 index14 alt2">
                                                                        <code class="cpp spaces">  </code><code class="cpp plain">setenv(name, </code><code class="cpp string">"I amsure of that I will get it"</code><code class="cpp plain">, 1); </code>
</div>
                                                                <div class="line number16 index15 alt1">
                                                                        <code class="cpp spaces">  </code><code class="cpp functions bold">printf</code><code class="cpp plain">(</code><code class="cpp string">"No.2%s=%s\n"</code><code class="cpp plain">, name, val); </code>
</div>
                                                                <div class="line number17 index16 alt2">
                                                                         </div>
                                                                <div class="line number18 index17 alt1">
                                                                        <code class="cpp spaces">  </code><code class="cpp plain">val = </code><code class="cpp functions bold">getenv</code><code class="cpp plain">(name); </code>
</div>
                                                                <div class="line number19 index18 alt2">
                                                                        <code class="cpp spaces">  </code><code class="cpp functions bold">printf</code><code class="cpp plain">(</code><code class="cpp string">"No.3%s=%s\n"</code><code class="cpp plain">, name, val); </code>
</div>
                                                                <div class="line number20 index19 alt1">
                                                                         </div>
                                                                <div class="line number21 index20 alt2">
                                                                        <code class="cpp spaces">  </code><code class="cpp comments">//删除一个环境变量 </code>
</div>
                                                                <div class="line number22 index21 alt1">
                                                                        <code class="cpp spaces">  </code><code class="cpp color1 bold">int</code> <code class="cpp plain">ret =unsetenv(</code><code class="cpp string">"ABC"</code><code class="cpp plain">); </code>
</div>
                                                                <div class="line number23 index22 alt2">
                                                                        <code class="cpp spaces">  </code><code class="cpp functions bold">printf</code><code class="cpp plain">(</code><code class="cpp string">"ret =%d\n"</code><code class="cpp plain">,ret); </code>
</div>
                                                                <div class="line number24 index23 alt1">
                                                                         </div>
                                                                <div class="line number25 index24 alt2">
                                                                        <code class="cpp spaces">  </code><code class="cpp plain">val = </code><code class="cpp functions bold">getenv</code><code class="cpp plain">(name); </code>
</div>
                                                                <div class="line number26 index25 alt1">
                                                                        <code class="cpp spaces">  </code><code class="cpp functions bold">printf</code><code class="cpp plain">(</code><code class="cpp string">"No.3 %s=%s\n"</code><code class="cpp plain">,name, val); </code>
</div>
                                                                <div class="line number27 index26 alt2">
                                                                         </div>
                                                                <div class="line number28 index27 alt1">
                                                                        <code class="cpp spaces">  </code><code class="cpp keyword bold">return</code> <code class="cpp plain">0; </code>
</div>
                                                                <div class="line number29 index28 alt2">
                                                                        <code class="cpp plain">} </code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。</p>
<p>
        原文链接:http://blog.csdn.net/Neil4/article/details/72865497?utm_source=tuicool&amp;utm_medium=referral</p>
頁: [1]
查看完整版本: Linux下查看控制环境变量的方法