在学习shell程序设计之前,要先有一个不错的环境,方能快速入门。
以下介绍准备环境。但是我觉得现在一般装有linux的,都自带了bash,而且版本也不低的吧。
在bash-3.2.tar.gz的目录下执行的
设定:
请执行configure,他会默认把bash安装到 /usr/local/ 目录中
在make tests等的时间有点长,不要以为出错了 先执行看看:
看到你现在bash的版本,就表示离开了,再执行exit,你就退出bash(终端关闭)。
bash(终端)在bash-3.2文件夹下,
在安装之前,你需要执行一些命令
有兴趣的朋友可以自己先不执行上面命令,试一下。
如果你之前设定没有指定目录,那你需要成为超级用户,即root来执行以下命令
若之前有利用 --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 中
说明:
我在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/ 了解
出现这种错误时,执行下面命令
打开/home/hill/Desktop/bash-3.2/po/ru.po 文件
以ubuntu12.04为例,执行命令
我们需要在最后加上bash编译出来的路径,需要root才能修改,修改之前,先复制一份备用,再修改。
执行命令
打开终端输入
之后,系统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 ......)
以下介绍准备环境。但是我觉得现在一般装有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.gz
cd 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 ,执行exit
echo $BASH_VERSION
看到你现在bash的版本,就表示离开了,再执行exit,你就退出bash(终端关闭)。
安装:
如果以上都没问题,就可以安装了bash(终端)在bash-3.2文件夹下,
在安装之前,你需要执行一些命令
sudo apt-get install gettext
sed -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 gettext
sed -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.po
mv: cannot stat `t-ru.gmo': No such file or directory
make[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 下载我编译好的文件
以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 。