0

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

4

1 回答 1

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。

于 2011-08-01T19:31:03.303 回答