实战Linux Shell(2):布署Bash Shell 的环境

来源:互联网 发布:go编程语言 编辑:程序博客网 时间:2024/05/01 16:27
在学习shell程序设计之前,要先有一个不错的环境,方能快速入门。
以下介绍准备环境。但是我觉得现在一般装有linux的,都自带了bash,而且版本也不低的吧。

这一节,那就只作科普吧,大家了解了解,什么升级新版本的bash,或者换个csh,tcsh......,可能有用吧。由于我装的ubuntu自带的bash版本是"4.2.25(1)-release",我写这博客时,至少是最新的。所以就按书上下一个 bash-3.2.tar.gz 来示范下。大家可以去http://ftp.gnu.org/gnu/bash/   下载一个试试。


操作过程如下:
在bash-3.2.tar.gz的目录下执行的
tar  -xvzf  bash-3.2.tar.gzcd  bash-3.2.tar.gz

设定:
请执行configure,他会默认把bash安装到 /usr/local/ 目录中
./configure

也可以用参数选项--prefix 指定要安装的路径,例如安装到hill的Desktop目录下bash3.2x文件夹下,自己建一个,可执行:

./configure --prefix=/home/hill/Desktop/bash3.2x


编译:

make


测试:

make tests

在make tests等的时间有点长,不要以为出错了

先执行看看:
./bash echo $BASH_VERSION


是不是一样呢?

接着离开新编译的bash ,执行
exitecho $BASH_VERSION


看到你现在bash的版本,就表示离开了,再执行exit,你就退出bash(终端关闭)。


安装:

如果以上都没问题,就可以安装了
bash(终端)在bash-3.2文件夹下,
在安装之前,你需要执行一些命令
sudo apt-get install gettextsed -i 's:UTF-8:KOI8-R:g' po/ru.po
不然你下面会出错,需要重新来过。下面我会大概说明下为什么,详细我也不会。O(∩_∩)O~
有兴趣的朋友可以自己先不执行上面命令,试一下。

如果你之前设定没有指定目录,那你需要成为超级用户,即root来执行以下命令
sudo make install
然后输入你的密码。

make install 默认会把bash的执行文件,安装在/usr/local/bin/中

/usr (unix software resource):与软件安装/执行有关;


/usr/local/
系统管理员在本机自行安装自己下载的软件(非distribution默认提供者),建议安装到此目录,这样会比较便于管理。举例来说,你的distribution提供的软件较旧,你想安装较新的软件但又不想移除旧版,此时你可以将新版软件安装于/usr/local/目录下,可与原先的旧版软件有分别啦!你可以自行到/usr/local去看看,该目录下也是具有bin, etc, include, lib...的次目录喔!

若之前有利用 --prefix 指定安装到个人目录,就不必使用root权限,直接make install 即可。以我的为例
./configure --prefix=/home/hill/Desktop/bash3.2x
make install
 会在/home/hill/Desktop/bash3.2x/ 中,安装bin,info,man,share等目录,bash的执行文件则放在/home/hill/Desktop/bash3.2x/bin 中

说明:

sudo apt-get install gettextsed -i 's:UTF-8:KOI8-R:g' po/ru.po


make[2]: `en@quot.gmo' is up to date.make[2]: `en@boldquot.gmo' is up to date.rm -f ru.gmo && : -c --statistics -o ru.gmo ru.pomv: cannot stat `t-ru.gmo': No such file or directorymake[2]: *** [ru.gmo] Error 1

我在google上搜索了一下,或者baidu 搜。
需要安装 sudo apt-get install gettext.  之后 make clean 。再重头开始,是重头开始哦
gettext 简而言之就是"翻译",有点太狭义了,先这么理解吧
GNU `gettext' is an important step for the GNU Translation Project, as it is an asset on which we may build many other steps.
详细的请到 http://zh.wikipedia.org/wiki/Gettext  和https://www.gnu.org/software/gettext/  了解

ru.po:21:9: invalid multibyte sequence ru.po:21:10: invalid multibyte sequence ru.po:21:11: invalid multibyte sequence ru.po:21:12: invalid multibyte sequence ru.po:21:13: invalid multibyte sequence ru.po:21:14: invalid multibyte sequence ru.po:21:15: invalid multibyte sequence ru.po:21:16: invalid multibyte sequence 

出现这种错误时,执行下面命令
sed -i 's:UTF-8:KOI8-R:g' po/ru.po
这一句是一个sed的替换命令,与下面操作等效
打开/home/hill/Desktop/bash-3.2/po/ru.po 文件

"MIME-Version: 1.0\n""Content-Type: text/plain; charset=UTF-8\n"   去掉这一行"Content-Type: text/plain; charset=KOI8-R\n"  加上这一行"Content-Transfer-Encoding: 8bit\n"
编码问题。



大家可以到   http://download.csdn.net/detail/hillcode/6353471   下载我编译好的文件



切换使用旧版本的Bash shell
以ubuntu12.04为例,执行命令
sudo vim /etc/shells
会看到
   # /etc/shells: valid login shells   /bin/sh   /bin/dash   /bin/bash   /bin/rbash

我们需要在最后加上bash编译出来的路径,需要root才能修改,修改之前,先复制一份备用,再修改。
 # /etc/shells: valid login shells  /bin/sh  /bin/dash  /bin/bash  /bin/rbash  /home/hill/Desktop/bash-3.2x/bin/bash 
 之前 ./configure 没改路径的,应该是这样的
 # /etc/shells: valid login shells  /bin/sh  /bin/dash  /bin/bash  /bin/rbash  /usr/local/bin/bash
反正就是 在最后一行加上,你bash-3.2编译出来的路径。

执行命令
chsh


之后,系统log out (注销)或者重启, 在重新登入


打开终端输入
echo $BASH_VERSION
你会看到 3.2.0(1)-release


由于自带的比3.2高,所以还是换回来吧。执行

chsh
输入密码后,输入
 /bin/bash
如图:




之后,系统log out (注销)或者重启, 在重新登入

这里注意:你不能把/etc/shell 最后一行改了,bash3.2x文件夹删了,再执行chsh
命令修改,这样会出错。你需要把bash改回原来的 4.2.25 后,才能修改/etc/shell和删除bash3.2x文件夹。
重新登入后,你可以把/etc/shell 最后一行去掉(需要root, sudo), 删除bash3.2x文件夹,或者你自己处理。


Linux目录配置,即(/var, /usr, /bin ......)

http://vbird.dic.ksu.edu.tw/linux_basic/0210filepermission_3.php  。



原创粉丝点击