LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: wangjt

配置shell时遇到的关于$的问题

 关闭 [复制链接]
发表于 2008-10-22 15:05:59 | 显示全部楼层
不好意思,怎么帮助新人的贴变成吵架了?

为了确定BLFS的代码是否正确,我刚才专门确认了一下。结果,BLFS的代码是正确的!

我实验的方法如下:

首先,到BLFS 6.3 手册的第3章:The Bash Shell Startup Files

它会给出配置/etc/profile的代码。

然后,我打开了终端,第一行代码输入了:

cat>>temp<<"EOF"  

我用temp文件代替/etc/profile

接着,我用鼠标复制了下面所有的代码,一直到EOF

然后粘贴到终端。

最后两行显示将是:
> # End /etc/profile
> EOF

然后我回车确认。当前目录下生成了temp文件。

然后我less了temp文件

less temp

和BLFS手册上的代码认真对照。结果是完全一样的。所有的代码,包括$号和{}号,都准确地输入了temp文件。

下面是输出结果。

因为我在BLFS过程中,根本没有进行第三章,因此并没有认真去校验过代码是对是错。现在校验的结果,这个/etc/profile的代码应该是正确的。

同时我直接从X window system开始的,我可以保证那章的代码都是正确的。我是“参照”那些代码做出了我自己的X window。

最后,谁都不是高手。只是有时候可能用词不当,或者热心过头而已。望见谅!

cat temp
# Begin /etc/profile
# Written for Beyond Linux From Scratch
# by James Robertson <jameswrobertson@earthlink.net>
# modifications by Dagmar d'Surreal <rivyqntzne@pbzpnfg.arg>

# System wide environment variables and startup programs.

# System wide aliases and functions should go in /etc/bashrc.  Personal
# environment variables and startup programs should go into
# ~/.bash_profile.  Personal aliases and functions should go into
# ~/.bashrc.

# Functions to help us manage paths.  Second argument is the name of the
# path variable to be modified (default: PATH)
pathremove () {
        local IFS=':'
        local NEWPATH
        local DIR
        local PATHVARIABLE=${2:-PATH}
        for DIR in ${!PATHVARIABLE} ; do
                if [ "$DIR" != "$1" ] ; then
                  NEWPATH=${NEWPATH:+$NEWPATH:}$DIR
                fi
        done
        export $PATHVARIABLE="$NEWPATH"
}

pathprepend () {
        pathremove $1 $2
        local PATHVARIABLE=${2:-PATH}
        export $PATHVARIABLE="$1${!PATHVARIABLE:+{!PATHVARIABLE}}"
}

pathappend () {
        pathremove $1 $2
        local PATHVARIABLE=${2:-PATH}
        export $PATHVARIABLE="${!PATHVARIABLE:+${!PATHVARIABLE}:}$1"
}


# Set the initial path
export PATH=/bin:/usr/bin

if [ $EUID -eq 0 ] ; then
        pathappend /sbin:/usr/sbin
        unset HISTFILE
fi

# Setup some environment variables.
export HISTSIZE=1000
export HISTIGNORE="&:[bf]g:exit"

# Setup a red prompt for root and a green one for users.
NORMAL="\[\e[0m\]"
RED="\[\e[1;31m\]"
GREEN="\[\e[1;32m\]"
if [[ $EUID == 0 ]] ; then
  PS1="$RED\u [ $NORMAL\w$RED ]# $NORMAL"
else
  PS1="$GREEN\u [ $NORMAL\w$GREEN ]\$ $NORMAL"
fi

for script in /etc/profile.d/*.sh ; do
        if [ -r $script ] ; then
                . $script
        fi
done

# Now to clean up
unset pathremove pathprepend pathappend

# End /etc/profile
回复 支持 反对

使用道具 举报

发表于 2008-10-22 15:28:27 | 显示全部楼层
Post by lofeng410;1897377
有话好好说 甭一上来就火气冲天~~


兄弟进行到哪一步了?最近不见你上来喊救命了,估计进展顺利嘛哈哈。
回复 支持 反对

使用道具 举报

发表于 2008-10-22 15:32:11 | 显示全部楼层
下次出问题,请给出LFS book的相关页面,这样也好判断。
至于你想学习Ctrl-C Ctrl-V 还是想学习linux搭建或者说锻炼写自动脚本的能力,那是你自己的选择,:)。
回复 支持 反对

使用道具 举报

发表于 2008-10-22 15:34:59 | 显示全部楼层
Post by ti8er;1897511
兄弟进行到哪一步了?最近不见你上来喊救命了,估计进展顺利嘛哈哈。


还没有完整的完成过一次,在理解那些指令的意思中。因为一直都不是很明白自己敲入的命令是什么意思,越到后面就越困惑,所以就回头了。呵呵~~
回复 支持 反对

使用道具 举报

发表于 2008-10-22 15:47:16 | 显示全部楼层
Post by lofeng410;1897518
还没有完整的完成过一次,在理解那些指令的意思中。因为一直都不是很明白自己敲入的命令是什么意思,越到后面就越困惑,所以就回头了。呵呵~~


恩,这么做非常好!

我也是这么做的,我LFS总共做了2次,第1次也是像你一样非常认真地想每个命令,经常回头,而且还不按书上的做。

经过多次的试验和失败后,终于明白,还是得按书上的做哈哈。因为我所实验的东西,那些家伙也早试验过了,上当了多少回才做出LFS手册:)

不过可不是说让你抄书哦,多反复几次多想还是需要的。老复制粘贴,结果会什么都学不到。

其中我觉得最难的命令就是gcc那里的,一长串,了解了以后,剩下的都很容易了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-22 17:33:02 | 显示全部楼层
多谢了,言语冒犯还望见谅,这时事艰难,你看我真是有点尖酸刻薄了,惭愧惭愧。

但为什么我这里就不行呢?我是在文本模式下做的,Bash Shell,直接输入就是不行,是不是得提前做什么设置?
回复 支持 反对

使用道具 举报

发表于 2008-10-22 17:57:00 | 显示全部楼层
Post by wangjt;1897587
多谢了,言语冒犯还望见谅,这时事艰难,你看我真是有点尖酸刻薄了,惭愧惭愧。

但为什么我这里就不行呢?我是在文本模式下做的,Bash Shell,直接输入就是不行,是不是得提前做什么设置?


很有可能你输错东西。比如引号、比如全角和半角等等,这些都要注意的。
回复 支持 反对

使用道具 举报

发表于 2008-10-22 19:14:08 | 显示全部楼层
Post by wangjt;1897340
作为新人,我很不认同你的观点,BLFS上的代码基本可以照抄的,不会出什么问题,收不收获那是时间的问题。如果要赶时间,完全可以不抄,让自动脚本去干就行了,自动脚本都能干,你手抄还能出问题?所以我的问题很明确,自动脚本是怎么做到的?

你们这些高手平时就是这么回答新人的问题?我水平差、对Shell不熟这用证明吗?我要水平高我会问这问题?你正正经经答我的问题不行?你不知道就说不知道嘛。

强调一下我的疑问:BLFS的自动脚本根据xsl文件从手册中抽取代码执行,为什么它可以这样做,我手动抽取就不行?这个自动脚本对这段代码做了什么处理?这个处理我可以手动进行吗?

就算是我不抄BLFS,我一样要面对这样的问题啊?我要用cat 命令住文本文件中输入大量的带$和各种其它特殊符号的东西我怎么办? -- 不用回答了,有人告诉我了,转义或用单引号。

你看了很多遍就可以装牛B了?你连人的代码都没抄过你怎么知道对还是不对?

这不是水平问题,而是求学的应有态度

信息很明确,要思考及去理解,若果只有不经思考的去抄袭,我也看不出有何前途

我不想多说,听不听是阁下的选择。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-23 23:03:31 | 显示全部楼层
Post by d00m3d;1897636
这不是水平问题,而是求学的应有态度

信息很明确,要思考及去理解,若果只有不经思考的去抄袭,我也看不出有何前途

我不想多说,听不听是阁下的选择。
我这不是思考不出来吗?实际上那文件我已经搞定了,cat不行我用vim呗,但问题还是问题啊, 那段命令我还是没不能用啊。 大侠牛x就指点一下啊。

我这是文本模式,想输全角也输不进去,代码我抄完全没有问题,其实根本和抄的对不对没关系,这问题很明显, 所有的$xxx都被bash解释过了,这是行为是预料之中,我只是不明白BLFS书里这么写是什么用意,我查了它的自动脚本所用的xsl,它从 input 域里把代码提取出来,然后在两头加上 “sudo bash -c '”  和 “'”,但我试过这种写法一样不行,我这里没有xml版本的BLFS book,也不知道去哪里下载,所以不确定自动脚本最后生成的代码是什么样的。

哪位知道,那些个求学态度好的,思考过,理解了的,有前途的,说下吧,
回复 支持 反对

使用道具 举报

发表于 2008-10-23 23:15:48 | 显示全部楼层
无聊的帖子。锁了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表