【问题标题】:Environment variables available in startup scripts启动脚本中可用的环境变量
【发布时间】:2011-10-17 09:18:01
【问题描述】:

在 Linux / Ubuntu 上使用启动脚本时,我可以访问 HOME 等环境变量还是这些特定于之后加载的用户/配置?

【问题讨论】:

    标签: ubuntu init init.d


    【解决方案1】:

    是和不是。一些变量特定于您的安装,其他变量特定于运行 init 脚本的 shell。了解可用的最小集合的一种简单方法是:

    /usr/bin/env -i /bin/sh -c set
    

    在我的系统(fedora 15)上,这最终会运行 bash 并输出:

    BASH=/bin/sh
    BASHOPTS=cmdhist:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
    BASH_ALIASES=()
    BASH_ARGC=()
    BASH_ARGV=()
    BASH_CMDS=()
    BASH_EXECUTION_STRING=set
    BASH_LINENO=()
    BASH_SOURCE=()
    BASH_VERSINFO=([0]="4" [1]="2" [2]="10" [3]="1" [4]="release" [5]="i386-redhat-linux-gnu")
    BASH_VERSION='4.2.10(1)-release'
    DIRSTACK=()
    EUID=xxx
    GROUPS=()
    HOSTNAME=xxx
    HOSTTYPE=i386
    IFS=''
    MACHTYPE=i386-redhat-linux-gnu
    OPTERR=1
    OPTIND=1
    OSTYPE=linux-gnu
    PATH=/usr/local/bin:/bin:/usr/bin
    POSIXLY_CORRECT=y
    PPID=xxx
    PS4='+ '
    PWD=/home/xxx
    SHELL=/bin/zsh
    SHELLOPTS=braceexpand:hashall:interactive-comments:posix
    SHLVL=1
    TERM=dumb
    UID=xxx
    _=/bin/sh
    

    在 Ubuntu 中 /bin/sh 是 dash 的符号链接,输出将更像:

    IFS=''
    LINENO='1'
    OPTIND='1'
    PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
    PPID='xxx'
    PS1='$ '
    PS2='> '
    PS4='+ '
    PWD='/home/xxx'
    

    一般来说,$HOME 不是一个好的选择,如果您需要特定用户的主目录,请使用 ~username 代替,如 ~www-data、~ftp 或 ~root。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-13
      • 2016-11-27
      • 2012-09-18
      • 1970-01-01
      • 2016-03-06
      • 1970-01-01
      • 1970-01-01
      • 2020-04-05
      相关资源
      最近更新 更多