zoukankan      html  css  js  c++  java
  • Ubuntu下环境变量的设置

    远程登录时,不是ssh登陆:
     xrdp 可以修改并添加 /etc/xrdp/startwm.sh 
    代码:
    #!/bin/sh

    if [ -r /etc/default/locale ]; then
      . /etc/default/locale
      export LANG LANGUAGE
    fi

    .  /etc/profile

    . /etc/X11/Xsession

    转自http://hi.baidu.com/sujinsujin/item/f3fd3bed56a408ddeb34c9eb

    /etc下:(bash.bashrc[Ubuntu]或bashrc[CentOS]);environment;profile
    普通用户及root用户家目录下:.bashrc;(.profile[Ubuntu]或.bash_profile[CentOS])
    环境变量配置文件
    1、/etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。
    2、/etc/environment:在登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量。
    3、~/.bash_profile: 在登录时用到的第三个文件是.bash_profile文件,每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行 一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。/etc/bash.bashrc:为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取。
    4、~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。
    几个文件的优先级:1>2>3
    在 linux下,如果是bash环境,用户登录时读取设置文件的顺序是/etc/profile --> ~/.bash_profile --> ~/.bashrc --> /etc/bash.bashrc。注意在~/.bash_profile这一步,如果没有~/.bash_profile ,则默认读取~/.bash_login,如果没有~/.bash_login 才读取~/.profile。
    根据发行版本的情况,有两个基本的 系统级配置文件:/etc/bash.bashrc和/etc/profile。这些配置文件包含两组不同的变量:shell变量和环境变量。前者只是在 特定的shell中固定(如bash),后者在不同shell中固定。shell变量是局部的,而环境变量是全局的。
    注意:尽量避免修改root用户的环境变量配置文件,因为那样可能会造成潜在的危险。最好不要把当前路径”./”放到PATH里,这样可能会受到意想不到的攻击。
    使用:
    把设置的环境变量给所有用户使用:/etc/bashrc;/etc/profile
    修改全局的环境变量在/etc/profile
    修改某个用户的环境变量在/home/用户名/.bash_profile

    相关命令:
    1、echo显示环境变量
    # echo $HOME
    /root
    2、export设置环境变量
    $ export HELLO=”Hello!”
    3、env显示所有环境变量
    $ env
    4、set显示所有本地定义的shell变量
    $ set
    5、unset清除环境变量
    $ export TEST=”test”
    $ env | grep TEST #此命令有输出,证明环境变量TEST已经存在了
    TEST=test
    $ unset TEST        #注意不是unset $TEST !!!
    $ env | grep TEST #此命令无输出,证明环境变量TEST已经不存在了
    6、readonly设置只读变量(变量不可以被修改或清除)
    $ export TEST=”Test”
    $ readonly TEST

    让/etc/profile的修改立即生效:
    1)$.  /etc/profile          注意:.和/etc之间有空格
    2)$source  /etc/profile 
    如果/etc/profile中配置的环境变量无法在root用户下使用,可以用sudo su - 来加载环境变量。
    实践经验:
    在/etc/profile下添加export PATH=$PATH:/sbin
    重启后:
    1)$ifconfig                    可以执行
    2)$sudo su
    #ifconfig                   不可以执行
    3)$sudo su -
    #ifconfig                    可以执行
    4)$su
    #ifconfig                    可以执行
    5)$ sudo -H ifconfig       可以执行


    常见的环境变量 
    PATH      决定了shell将到哪些目录中寻找命令或程序
    HOME      当前用户主目录
    HISTSIZE    历史记录数
    LOGNAME     当前用户的登录名 
    HOSTNAME    指主机的名称
    SHELL      前用户Shell类型 
    LANGUGE     语言相关的环境变量,多语言可以修改此环境变量
    MAIL      当前用户的邮件存放目录 
    PS1       基本提示符,对于root用户是#,对于普通用户是$
    PS2       附属提示符,默认是“>”
    通过C程序来访问和设置环境变量 
    对于C程序的用户来说,可以使用下列三个函数来设置或访问一个环境变量。 
    getenv()访问一个环境变量。输入参数是需要访问的变量名字,返回值是一个字符串。如果所访问的环境变量不存在,则会返回NULL。
    setenv()在程序里面设置某个环境变量的函数。
    unsetenv()清除某个特定的环境变量的函数。
    另外,还有一个指针变量environ,它指向的是包含所有的环境变量的一个列表。下面的程序可以打印出当前运行环境里面的所有环境变量:
    #include <stdio.h>
    extern char**environ;
    int main ()
    {
    char**var;
    for (var =environ;*var !=NULL;++var)
    printf (”%s “,*var);
    return 0;
    }

     
     
    分类: Linux
  • 相关阅读:
    网页中让flash在最底层显示
    在asp.net mvc模式下怎么实现导出Excel文件
    Tomcat的内存溢出(PermGen space)
    CentOS下安装7zip
    CentOS安装keychain
    HTML中添加水平滚动文字
    getOutputStream() has already been called for this response的解决方法
    小型服务器的分区方案
    Mysql导出存储过程
    CentOS安装FileZilla时找不到libtasn1.so.3
  • 原文地址:https://www.cnblogs.com/huashiyiqike/p/3560499.html
Copyright © 2011-2022 走看看