知识大全 全面解读 startx
Posted 知
篇首语:人永远是要学习的。死的时候,才是毕业的时候。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 全面解读 startx相关的知识,希望对你有一定的参考价值。
总览 startx 只是xinit的一个前端工具 它所做的只是设置好一些变量 资源 然后再用xinit 启动X window xinit的命令格式 xinit [ [client] clientargs] [ [server] [display] serverargs] startx所做的工作: 一 获取命令行参数 client段 clientargs: 完全从命令行中获取 无默认值 client: 如果没有指定 但是已经指定clientargs 则使用/usr/X R /bin/xterm 如果没有指定 且没有指定clientargs 则使用 /defaultclientargs 即按以下顺序取值 $HOME/ xinitrc > /usr/X R /lib/X /xinit/xinitrc /usr/X R /lib/X /xinit/xinitrc其实就是执行/etc/X /Xsessions这个脚本 而/etc/X /Xsession又会检查$HOME/ xsession 如果存在则把它作为client 所以如果$HOME/ xinitrc不存在时 它可以使用$HOME/ xsession;而当$HOME/ xinitrc存在 时 它并不会使用$HOME/ xsession server段 跟client类似 增加一个display的设置 默认为 : 二 设置标志认证 三 通过xinit启动X 四 关闭X时 进行一些收尾工作 对xinit来说 如果没有指定client 则使用$HOME/ xinitrc 如果这个也不存在则使用xterm 如果没有指定server 则使用$HOME/ xserverc 如果这这个不存在的话则使用X : 所以当由startx启动X时 client的顺序是: 命令行 > $HOME/ xinitrc > $HOME/ xsession > /usr/X R /lib/X /xinit/xinitrc server的顺序是: 命令行 > $HOME/ xserverrc > /usr/X R /lib/X /xinit/xserverrc 以上 > 表示 当前一个不存在时 则取下面一个 直到存在 源码: #!/bin/sh # $X: startx cpp v / / : : cpqbld Exp $ # # This is just a sample implementation of a slightly less primitive # interface than xinit It looks for user xinitrc and xserverrc # files then system xinitrc and xserverrc files else lets xinit choose # its default The system xinitrc should probably do things like check # for Xresources files and merge them in startup up a window manager # and pop a clock and serveral xterms # # Site administrators are STRONGLY urged to write nicer versions # # $XFree : xc/programs/xinit/startx cpp v / / : : tsi Exp $ #注意 xinit 的参数格式: #xinit $client $clientargs $server $display $serverargs #各个参数的特点 #client必须是以 / 或者 / 开头 因为client其实就是一个程序 所以他是由路径来指出 的 #第一个clientargs不能是以 / 或者 / 开头的 #对于server跟serverargs的区别也是类似的 #而display跟serverargs的区别 #display是第一个以 :?? (??代表两个数字)开头的字符串 userclientrc=$HOME/ xinitrc userserverrc=$HOME/ xserverrc sysclientrc=/usr/X R /lib/X /xinit/xinitrc sysserverrc=/usr/X R /lib/X /xinit/xserverrc defaultclient=/usr/X R /bin/xterm defaultserver=/usr/X R /bin/X defaultclientargs= defaultserverargs= clientargs= serverargs= #===================参数配置文件================ if [ f $userclientrc ]; then defaultclientargs=$userclientrc elif [ f $sysclientrc ]; then defaultclientargs=$sysclientrc fi if [ f $userserverrc ]; then defaultserverargs=$userserverrc elif [ f $sysserverrc ]; then defaultserverargs=$sysserverrc fi #接收命令行参数 whoseargs= client #谁的参数 之前是client的参数 之后是server的参数 while [ x $ != x ]; do case $ in # required to prevent cpp from treating /* as a C ment / *|\\ / *) #这个参数是以 / 或者 / 开头 if [ $whoseargs = client ]; then if [ x $clientargs = x ]; then # 如果clientargs为空 说明这个参数是从命令行传入的第一个参数 # 故它应该是client client= $ else clientargs= $clientargs $ fi else if [ x $serverargs = x ]; then #为什么这里不用display是否为空来判断呢? #因为display可以省略 这时则不能正确判断了 server= $ else serverargs= $serverargs $ fi fi ;; ) whoseargs= server ;; *) if [ $whoseargs = client ]; then clientargs= $clientargs $ else # display must be the FIRST server argument if [ x $serverargs = x ] && expr $ : :[ ][ ]*$ > /dev/null >& ; then #如果serverargs为空 并且$ 是以 : 跟数字组成 即为display参数 display= $ else serverargs= $serverargs $ fi fi ;; esac shift done #命令行参数接收完毕 # process client arguments if [ x $client = x ]; then # if no client arguments either use rc file instead if [ x $clientargs = x ]; then client= $defaultclientargs else client=$defaultclient fi fi # process server arguments if [ x $server = x ]; then # if no server arguments or display either use rc file instead if [ x $serverargs = x a x $display = x ]; then server= $defaultserverargs else server=$defaultserver fi fi if [ x $XAUTHORITY = x ]; then XAUTHORITY=$HOME/ Xauthority export XAUTHORITY fi removelist= # set up default Xauth info for this machine # check for GNU hostname if hostname version > /dev/null >& ; then if [ z `hostname version >& | grep GNU` ]; then hostname=`hostname f` #long hostname fi fi if [ z $hostname ]; then hostname=`hostname` fi #以上是设置hostname #添加X标记认证 authdisplay=$display: : #设置要验证的显示 如果display已经设置则取display的值 #如果display没有设置 则取: mcookie=`mcookie` for displayname in $authdisplay $hostname$authdisplay; do if ! xauth list $displayname | grep $displayname >/dev/null >& ; then #没有xauth认证 需要添加 xauth add $displayname $mcookie removelist= $displayname $removelist fi done #启动X window xinit $client $clientargs $server $display $serverargs #关闭X window时 if [ x $removelist != x ]; then #删除标记认证 xauth remove $removelist fi #释放不用的虚拟终端所占用的资源 if mand v deallocvt > /dev/null >& ; then deallocvt fi 由于本人对X机制也不是很了解 所以错误在所难免 欢迎大家指正 有关xauth部分 请参阅 ~bric /# cha138/Article/program/Oracle/201311/17774相关参考
如何解读RSI指标?RSI(市场买卖相对强弱指标)是股市技术分析中最常用的技术指标之一,作为一种市场价格强弱性指标,其最大实战性操作作用不是在于持仓捂股,而是在于选择买入或卖出的波段时机。很多炒股者把
HR解读三大面试难题 以下文字资料是由(本站网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 面试是求
解读UDDI和JAXR 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在过去的数年中许多开发人员
困惑:解读Linux的十大缺憾(3) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 作者伊梅
知名外企面试重点全解读找到一份理想的工作是大学毕业生们最大的心愿,而进入那些知名的大企业更是广大毕业生的梦想。如何应付这些企业的面试成为了毕业生们最为关注的话题。这些名企的面试往往有一定的程序,绝非草
解读.Net虚拟框架的实现原理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在让Net程序脱离
作者简介郑静晨,武警总医院院长,国务院应急管理专家组成员,中国国际救援队副总队长兼首席医疗官,中国灾害防御协会救援医学会副会长,成功组织十余次国内外重大灾害医疗救援。主编《灾害救援医学》一书。被国务院
白癜风症状很明显,但也容易和一些其它类似的病混肴,疾病中非常典型的一种,对于白癜风的研究一直也是非常的多,白癜风的临床表现特征的问题也一直以来深受白癜风医疗界的关注,今天我们来看看专家为我们解读的白癜
白癜风症状很明显,但也容易和一些其它类似的病混肴,疾病中非常典型的一种,对于白癜风的研究一直也是非常的多,白癜风的临床表现特征的问题也一直以来深受白癜风医疗界的关注,今天我们来看看专家为我们解读的白癜
详细解读JVM中的对象生命周期 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在JVM运行空间中