配置shell时遇到的关于$的问题
时间:2008-10-21
来源:互联网
然后就一行行敲,结果因为输入的内容里包含${xxxx}这样的东西,被shell给解释成了空(没有定义的变量),最后没办法只好用vim一个个更正。我想问一下,如何阻止shell解释我的输入?BLFS手册应该没问题吧,可为什么我不能照抄还得自己处理这事?
郁闷呢,一开始我还想偷个懒,在windows下直接把BLFS手册上的代码复制到文本文件中,然后在LFS下把文件弄到适当的位置,结果不行,反复检查了个把小时,才搞明白原来是window的回车换行符跟linux不一致,导致出错,这个有没有更好的解决办法?(我后来没办法了,那台机器的windows下也没装什么高级编辑软件,只好在LFS下就手抄了一遍,幸好我把鼠标先装好了,还可以复制粘贴)
作者: wangjt 发布时间: 2008-10-21
作者: wangjt
昨晚按BLFS手册配置shell,在创建/etc/profile等文件时使用cat > /etc/profile << "EOF"
然后就一行行敲,结果因为输入的内容里包含${xxxx}这样的东西,被shell给解释成了空(没有定义的变量),最后没办法只好用vim一个个更正。我想问一下,如何阻止shell解释我的输入?BLFS手册应该没问题吧,可为什么我不能照抄还得自己处理这事? 郁闷呢,一开始我还想偷个懒,在windows下直接把BLFS手册上的代码复制到文本文件中,然后在LFS下把文件弄到适当的位置,结果不行,反复检查了个把小时,才搞明白原来是window的回车换行符跟linux不一致,导致出错,这个有没有更好的解决办法?(我后来没办法了,那台机器的windows下也没装什么高级编辑软件,只好在LFS下就手抄了一遍,幸好我把鼠标先装好了,还可以复制粘贴) |
BLFS手册是最难的,因为它不像LFS那样,可以“照抄“,步骤也是相当灵活的,不是LFS那样一步步来,复制命令照做都没关系。
BLFS很灵活,所以你需要对LINUX和SHELL要有更深入的认识。很多人在做BLFS时还是一个个照抄,结果肯定是出问题!特别在配置X系统的时候,手册把脚本分成了几部分,如果不清楚SHELL脚本,那肯定是搞错的。
作者: ti8er 发布时间: 2008-10-21
作者: ti8er
看来楼主对SHELL编程还不是很清楚,需要继续加强学习啊!
BLFS手册是最难的,因为它不像LFS那样,可以“照抄“,步骤也是相当灵活的,不是LFS那样一步步来,复制命令照做都没关系。 BLFS很灵活,所以你需要对LINUX和SHELL要有更深入的认识。很多人在做BLFS时还是一个个照抄,结果肯定是出问题!特别在配置X系统的时候,手册把脚本分成了几部分,如果不清楚SHELL脚本,那肯定是搞错的。 |
还有就是按照自动脚本的运行原理,好像是直接从手册的xml文件中抽取代码去执行,但这些代码有问题,自动脚本配置BLFS是不是也会遇到这个问题?
作者: wangjt 发布时间: 2008-10-21
作者: wangjt
我只是想确认一下BLFS手册里的代码是不是有瑕疵,因为那些代码是以代码的格式出现的,按理说应该照着抄过去就没什么问题的,否则给出那些代码就没有意义的,那些代码是错误的,执行那种代码得到的结果是不可预期的。
还有就是按照自动脚本的运行原理,好像是直接从手册的xml文件中抽取代码去执行,但这些代码有问题,自动脚本配置BLFS是不是也会遇到这个问题? |
就好比我给你一个代码
cd 你的工作目录
要是你不知道,直接复制粘贴,能行吗?
BLFS中,很多代码都是这样的,你说是它错吗?
那么多人看手册做出了BLFS,从来没有说它错的。要理解,不是照抄。这就是BLFS。
作者: ti8er 发布时间: 2008-10-21
“以代码形式出现的,按理说抄过去没有问题”
是从哪里看到的?书上原文这么说的,还是你自己的错觉?别拿“经验”去套啊,兄弟。
LFS没错,都可以抄,但是LFS书中也绝对没有提到,“照抄过去没问题”。
BLFS更加没有让你去“照抄”。
作者: ti8er 发布时间: 2008-10-21
作者: ti8er
你说的
“以代码形式出现的,按理说抄过去没有问题” 是从哪里看到的?书上原文这么说的,还是你自己的错觉?别拿“经验”去套啊,兄弟。 LFS没错,都可以抄,但是LFS书中也绝对没有提到,“照抄过去没问题”。 BLFS更加没有让你去“照抄”。 |
对于像这种
cat > /etc/profile << "EOF"
.........${PATH}.........
EOF
这样写图什么?还cat,故意误导我们这种新人?
这如果不算是以代码形式出现,何必要写 cat 那一行?和最后那个EOF?
作者: wangjt 发布时间: 2008-10-22
作者: wangjt 发布时间: 2008-10-22
作者: wangjt
你这什么跟什么啊,你看没看过BLFS手册,一般情况人家的描述都很精准的,哪像你说的“cd到你的工作目录”这样搪塞人的,肯定旁边标着把“工作目录”换成你的环境设置之类的说明。
对于像这种 cat > /etc/profile << "EOF" .........${PATH}......... EOF 这样写图什么?还cat,故意误导我们这种新人? 这如果不算是以代码形式出现,何必要写 cat 那一行?和最后那个EOF? |
ti8er 带给你的信息很明确,BLFS 下没有残废餐!必需要自己思考,再按手册的指导去完成自己所需的。
作者: wangjt
而且BLFS给出的shell配置脚本是很通用的那种,抄过来绝对没有问题,所以我没有问我该怎么配置shell,因为我抄过去已经配置OK了,起码现阶段我没有什么更高的要求了。我这帖子是想问一下,人家BLFS的作者是不是作了什么设置使书上的代码可以直接执行而不出问题(那不是代码合不合适的问题,那代码根本就是错的,就算在作者自己的机器上如果执行结果是那样的那也不能工作)。
|
作者: d00m3d 发布时间: 2008-10-22
作者: d00m3d
很不认同楼主这些说法!
ti8er 带给你的信息很明确,BLFS 下没有残废餐!必需要自己思考,再按手册的指导去完成自己所需的。 我说过很多遍,LFS/BLFS 的精髓在於其过程,思考系统的运作方式,并非按照手册敲(拷)命令把系统做出来就算完事,否则只是浪费了阁下青春,而你也只会觉得折腾自己,没有收获! |
你们这些高手平时就是这么回答新人的问题?我水平差、对Shell不熟这用证明吗?我要水平高我会问这问题?你正正经经答我的问题不行?你不知道就说不知道嘛。
强调一下我的疑问:BLFS的自动脚本根据xsl文件从手册中抽取代码执行,为什么它可以这样做,我手动抽取就不行?这个自动脚本对这段代码做了什么处理?这个处理我可以手动进行吗?
就算是我不抄BLFS,我一样要面对这样的问题啊?我要用cat 命令住文本文件中输入大量的带$和各种其它特殊符号的东西我怎么办? -- 不用回答了,有人告诉我了,转义或用单引号。
你看了很多遍就可以装牛B了?你连人的代码都没抄过你怎么知道对还是不对?
作者: wangjt 发布时间: 2008-10-22
作者: lofeng410 发布时间: 2008-10-22
为了确定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 <[email protected]>
# modifications by Dagmar d'Surreal <[email protected]>
# 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
作者: ti8er 发布时间: 2008-10-22
作者: lofeng410
有话好好说 甭一上来就火气冲天~~
|
作者: ti8er 发布时间: 2008-10-22
至于你想学习Ctrl-C Ctrl-V 还是想学习linux搭建或者说锻炼写自动脚本的能力,那是你自己的选择,:)。
作者: 晨想 发布时间: 2008-10-22
作者: ti8er
兄弟进行到哪一步了?最近不见你上来喊救命了,估计进展顺利嘛哈哈。
|
作者: lofeng410 发布时间: 2008-10-22
作者: lofeng410
还没有完整的完成过一次,在理解那些指令的意思中。因为一直都不是很明白自己敲入的命令是什么意思,越到后面就越困惑,所以就回头了。呵呵~~
|
我也是这么做的,我LFS总共做了2次,第1次也是像你一样非常认真地想每个命令,经常回头,而且还不按书上的做。
经过多次的试验和失败后,终于明白,还是得按书上的做哈哈。因为我所实验的东西,那些家伙也早试验过了,上当了多少回才做出LFS手册:)
不过可不是说让你抄书哦,多反复几次多想还是需要的。老复制粘贴,结果会什么都学不到。
其中我觉得最难的命令就是gcc那里的,一长串,了解了以后,剩下的都很容易了。
作者: ti8er 发布时间: 2008-10-22
但为什么我这里就不行呢?我是在文本模式下做的,Bash Shell,直接输入就是不行,是不是得提前做什么设置?
作者: wangjt 发布时间: 2008-10-22
作者: wangjt
多谢了,言语冒犯还望见谅,这时事艰难,你看我真是有点尖酸刻薄了,惭愧惭愧。
但为什么我这里就不行呢?我是在文本模式下做的,Bash Shell,直接输入就是不行,是不是得提前做什么设置? |
作者: ti8er 发布时间: 2008-10-22
作者: wangjt
作为新人,我很不认同你的观点,BLFS上的代码基本可以照抄的,不会出什么问题,收不收获那是时间的问题。如果要赶时间,完全可以不抄,让自动脚本去干就行了,自动脚本都能干,你手抄还能出问题?所以我的问题很明确,自动脚本是怎么做到的?
你们这些高手平时就是这么回答新人的问题?我水平差、对Shell不熟这用证明吗?我要水平高我会问这问题?你正正经经答我的问题不行?你不知道就说不知道嘛。 强调一下我的疑问:BLFS的自动脚本根据xsl文件从手册中抽取代码执行,为什么它可以这样做,我手动抽取就不行?这个自动脚本对这段代码做了什么处理?这个处理我可以手动进行吗? 就算是我不抄BLFS,我一样要面对这样的问题啊?我要用cat 命令住文本文件中输入大量的带$和各种其它特殊符号的东西我怎么办? -- 不用回答了,有人告诉我了,转义或用单引号。 你看了很多遍就可以装牛B了?你连人的代码都没抄过你怎么知道对还是不对? |
信息很明确,要思考及去理解,若果只有不经思考的去抄袭,我也看不出有何前途
我不想多说,听不听是阁下的选择。
作者: d00m3d 发布时间: 2008-10-22
作者: d00m3d
这不是水平问题,而是求学的应有态度
信息很明确,要思考及去理解,若果只有不经思考的去抄袭,我也看不出有何前途 我不想多说,听不听是阁下的选择。 |
我这是文本模式,想输全角也输不进去,代码我抄完全没有问题,其实根本和抄的对不对没关系,这问题很明显, 所有的$xxx都被bash解释过了,这是行为是预料之中,我只是不明白BLFS书里这么写是什么用意,我查了它的自动脚本所用的xsl,它从 input 域里把代码提取出来,然后在两头加上 “sudo bash -c '” 和 “'”,但我试过这种写法一样不行,我这里没有xml版本的BLFS book,也不知道去哪里下载,所以不确定自动脚本最后生成的代码是什么样的。
哪位知道,那些个求学态度好的,思考过,理解了的,有前途的,说下吧,
作者: wangjt 发布时间: 2008-10-24
作者: 晨想 发布时间: 2008-10-24
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28