+ -
当前位置:首页 → 问答吧 → bash配置文件实验报告

bash配置文件实验报告

时间:2004-01-13

来源:互联网

前一段时间,有兄弟提出为什么打开终端后.bashrc文件没有被执行,结果引发了一场讨论。详见:http://www.linuxsir.org/bbs/showthre...threadid=69247

近来用man bash看了看bash的文档,其中在Files部分提到:
代码:
 /etc/profile
 The systemwide initialization file, executed for login shells
 系统全程的初始化文件,为登录的shell所执行
 ~/.bash_profile
 The personal initialization file, executed for login shells
 个人的初始化文件,为登录的shell所执行
 ~/.bashrc
 The individual per-interactive-shell startup file
 个人的交互式shell的起始文件
 ~/.bash_logout
 The individual login shell cleanup file, executed when a login shell exits
 个人登录shell的清理文件,当登录shell退出时执行
文档的Invocation部分详细解释了在哪种情况下调用哪个配置文件,其中提到如果用sh命令来调用bash时还可能会用到 ~/.profile 文件。
为了直观理解manpage中提到的各种情况,我设计了几个简单的实验来进行验证。

第一步:建立各个对应文件,即在用户目录下分别建立 .bash_profile, .profile, .bashrc和 .bash_logout。假如已经有这些文件了,请先做好备份。每个文件的内容只有一行,命令如下:
代码:
echo 'echo hello from .bash_profile' > .bash_profile
echo 'echo hello from .profile' > .profile
echo 'echo hello from .bashrc' > .bashrc
echo 'echo hello from .bash_logout' > .bash_logout
第二步:设置用文本界面启动,用root身份编辑 /etc/inittab文件,把以id开头的一行改为:
id:3:initdefault:

第三步:退出当前用户,此时会进入文本登录界面。

实验一:
1.输入用户名和密码进行登录。
根据bash的manpage,此时启动的是登录shell,bash将首先执行/etc/profile文件,然后依次查找 ~/.bash_profile, ~/.bash_login, ~/.profile文件,并执行它所找到的第一个。在我们当前的实验中,它应该执行的是 .bash_profile,因此屏幕应该显示 hello from .bash_profile
2.输入:
logout
屏幕应显示 hello from .bash_logout。由于当前是个登录shell,所以退出时会执行 .bash_logout

实验二:
1.在文本登录界面登录,然后输入命令:
sh
屏幕上只会出现另一个命令行提示符。manpage中说,当以sh调用bash时,bash只会执行最简化的启动步骤,不读入任何配置文件。
2.输入:
logout
屏幕出现 bash: logout: not login shell: use `exit' ,说明我们当前的shell不是一个登录shell;
3.输入:
exit
屏幕显示exit,然后回到最初的登录shell
由于我们用sh命令启动的shell不是登录shell,所以它退出时不会执行.bash_logout
4.输入:
sh --login
屏幕显示hello from .profile。看看manpage,--login选项用来启动一个登录shell,此时用sh调用bash,它将会执行/etc/profile以及 ~/.profile,这正是我们得到的结果。
5.输入:
logout
屏幕显示 hello from .bash_logout
由于我们退出的是一个登录shell,所以执行了.bash_logout

实验三:
1.输入:
bash
屏幕显示 hello from .bashrc。因为当前用bash命令启动的不是登录shell,所以执行了.bashrc
2.输入:
logout
屏幕出现 bash: logout: not login shell: use `exit' ,说明我们当前的shell不是一个登录shell;
3.输入:
exit
屏幕显示exit,然后回到最初的登录shell
由于不是登录shell,所以它退出时不执行.bash_logout
4.输入:
bash --login
屏幕显示hello from .bash_profile。--login选项用来启动一个登录shell,此时bash的表现与实验一相同。
5.输入:
logout
屏幕显示 hello from .bash_logout
由于我们退出的是一个登录shell,所以执行了.bash_logout

小结:以上的简单实验直观地显示了bash在何种情况下将执行哪个配置文件,但实际上bash的行为还受到启动选项和一些环境变量的影响,情况将会很复杂。若需要深入研究请认真研读manpage。

作者: windrose   发布时间: 2004-01-13

windrose兄辛苦了,最近做了很多基础shell的东西。

作者: struggle   发布时间: 2004-01-14

举一个应用的例子。我一直是用init 3(文本模式)启动和登录系统的,但往往登录之后就启动X window,只是偶尔再回到文本界面。可能有兄弟会说,为什么不用init 4(图形登录)?我觉得如果用了init 4,假如想返回纯文本界面,还要再修改inittab,到底不是很方便。于是创建了 ~/.bash_profile,添加如下内容:
代码:
if test x"$DISPLAY" = x""
then
startx
fi
这样,我从shell登录之后,直接就启动X window。假如想回到文本界面,只要退出X就可以了。

作者: windrose   发布时间: 2004-01-14

有意思

作者: 用户名   发布时间: 2004-01-15

Bash最常见的激活模式是交互式和非交互式:
1.交互式激活
指其标准输入和输出都连接在终端上.又分为三种类型:login,非login,posix
以及受限的shell.
确定一个shell是否是交互式的可以通过检测$PS1环境变量.
(1) 当Bash作为login shell被激活时,它将依次读取并执行以下文件:
/etc/profile,~/.bash_profile,~/.bash_login,~/.profile
使用--noprofile选项激活Bash可以禁止其读任何初始化文件
在退出时执行 ~/.bash_logout 文件
(2) 当Bash作为非login shell被激活时,它将读取并执行~/.bashrc
使用--norc选项激活Bash可以禁止执行任何初始化文件,使用
--rcfile file可以指定执行的初始化文件.
(3) 当Bash作为posix模式被激活时,它将先检查$ENV变量是否定义.
若定义,Bash读取并执行有$ENV变量扩展而得到的文件,否则不再
执行任何初始化文件。
(4) 当Bash作为受限模式被激活时,它除了禁止某些操作以外,其他行为
于其他模式相同.受限操作有:改变目录,修改$SHELL和$PATH变量,
运行exec,以绝对路径运行程序以及使用重定向.Bash 1.x中不包含
受限模式.
2.非交互式激活
主要用来运行Shell脚本.启动后,Bash检查$BASH_ENV变量,若定义,
这执行该变量指定文件中包含的命令.
Bash 的激活选项
-c string 该选项表明string中包含了一条命令.如 bash -c ls ~
-i 使Bash以交互式方式运行
-r 使Bash以受限方式运行
--login 使Bash以登录Shell方式运行
--posix 使Bash遵循POSIX标准
--verbose 使Bash显示所有其读入的输入行
--help 打印Bash的使用信息
--version 打印版本信息
--noprofile
--norc
--rcfile file

作者: windrose   发布时间: 2004-04-06

那么如果我要修改登录后的环境变量,比如LC_ALL之类的,该改哪个文件呢?

==========

知道了,改.bash_profile就行了。
多谢版主!

作者: BBDD   发布时间: 2004-04-11

我看得不是很明白。
请问怎样使X-windows里的虚拟终端以“登陆shell”的方式运行呢?

我启动虚拟终端(gnome-ternima、mlterm等等)后,终端提示符是“sh-2.05b$”,/etc/profile里关于shell prompt的一段设置没生效(没有显示成“hupeng923@slackware:~$”这样)可是其它的设置生效了,比如java变量、XIM等等,也就是说/etc/profile文件部分被执行?那么此时的x-windows的虚拟终端是哪种shell呢,login shell还是no login shell?为什么在纯控制台模式下,/etc/profile里关于shell prompt的一段设置却生效了?

作者: hupeng923   发布时间: 2004-06-08

.bash_profile, .bash_logout 和 .bashrc文件

.bash_profile 只被 登录shell 读取并执行。如果你通过在命令行上键入一个 bash 启动一个新的 shell,这就会试图读取 .bashrc 中的命令。如果需要在登录shell 和启动一个 子shell 命令时进行一样的操作,可以在 .bash_profile 中使用 source 命令执行 .bashrc。如果 .bashrc 不存在,那么启动一个子 shell 时就没有命令被执行。

文件 .bash_logout 在每次 登录shell 退出时被读取并执行。它提供了定制用户环境的功能。如果要执行诸如删除账号内临时文件或记录登录系统所花时间等命令,则可将这些命令放在 .bash_logout 内。该文件不必一定存在于账号内--如果不存在,则退出时不再执行其他命令。

bash 允许有 .bash_profile 的两个同义文件:来源于 C shell文件 .login 的 .bash_login 以及来源于 Bourne shell 和 Korn shell 文件 .profile 的 .profile。登录时三者中只有一个被读取,如果用户根目录下 .bash_profile 不存在,则 bash 查找 .bash_login,如果它也不存在,则查找 .profile。

作者: qianzheng82   发布时间: 2004-06-08

引用:
最初由 hupeng923 发表
我看得不是很明白。
请问怎样使X-windows里的虚拟终端以“登陆shell”的方式运行呢?

我启动虚拟终端(gnome-ternima、mlterm等等)后,终端提示符是“sh-2.05b$”,/etc/profile里关于shell prompt的一段设置没生效(没有显示成“hupeng923@slackware:~$”这样)可是其它的设置生效了,比如java变量、XIM等等,也就是说/etc/profile文件部分被执行?那么此时的x-windows的虚拟终端是哪种shell呢,login shell还是no login shell?为什么在纯控制台模式下,/etc/profile里关于shell prompt的一段设置却生效了?
正确的习惯应该让/etc/profile的内容保持缺省原样,然后本用户的相关个性设置比如prompt方式和alias等等放到~/.bash_profile里,然后为了使x下的终端跟登陆shell一致,做一个~/.bashrc符号链接到~/.bash_profile即可。

作者: guccio   发布时间: 2004-06-08

rt

作者: hupeng923   发布时间: 2004-06-08

非login的交互式shell

作者: guccio   发布时间: 2004-06-09

作者: hupeng923   发布时间: 2004-06-09

konsole打开的是login shell

作者: windrose   发布时间: 2004-06-09

我的虚拟终端是gnome-terminal和mlterm。
可我还是不明百为什么打开虚拟终端后/etc/profile里的shell prompt没有被执行而其它的设置被执行了:ask

作者: hupeng923   发布时间: 2004-06-09

gnome-terminal和mlterm打开的都是非登录shell,所以应该不执行/etc/profile。你觉得其他设置被执行,可能是你的 ~/.bashrc 或 ~/.profile 里面有同样的设置。

作者: windrose   发布时间: 2004-06-09

我的用户目录下没有.bashrc、.bash_profile和.profile;很奇怪,/etc/profile里的shell prompt没有被执行,但是XIM、Java变量等等却被执行了

作者: hupeng923   发布时间: 2004-06-09

我就是用mlterm,而且也用过gnometerm,首先,gnometerm的设置选项里可以选择以登陆shell方式运行,这样就会执行/etc/profile里的prompt,如果你跟我一样使用mlterm的话,那么就把属于你自己独特的shell环境变量和alias保存到~/.bashrc中就可以了,没有的话自己新建一个,因为mlterm属于非login的交互式terminal,他只会继承已有的环境变量而不会执行/etc/profile,但是他会执行~/.bashrc里的语句。

作者: guccio   发布时间: 2004-06-09

谢谢guccio,我试过了,好象不起作用。.bashrc不被gterm(默认状态)或mlterm调用,是不是我建立用户的方式有问题?我是/usr/sbin/useradd XXX && passwd XXX建立的用户。
另外我测试了一下,得到这个结果:
"$SHELL" = "/bin/sh"

作者: hupeng923   发布时间: 2004-06-09

我一般用adduser,貌似没发生过问题,useradd没有用过,要么你试试看adduser或者用root登陆试试看。

作者: guccio   发布时间: 2004-06-09

不管它了,slackware真是与众不同。

作者: hupeng923   发布时间: 2004-06-09

引用:
最初由 windrose 发表
前一段时间,有兄弟提出为什么打开终端后.bashrc文件没有被执行,结果引发了一场讨论。详见:http://www.linuxsir.org/bbs/showthre...threadid=69247

近来用man bash看了看bash的文档,其中在Files部分提到:
代码:
 /etc/profile
 The systemwide initialization file, executed for login shells
 系统全程的初始化文件,为登录的shell所执行
 ~/.bash_profile
 The personal initialization file, executed for login shells
 个人的初始化文件,为登录的shell所执行
 ~/.bashrc
 The individual per-interactive-shell startup file
 个人的交互式shell的起始文件
 ~/.bash_logout
 The individual login shell cleanup file, executed when a login shell exits
 个人登录shell的清理文件,当登录shell退出时执行
文档的Invocation部分详细解释了在哪种情况下调用哪个配置文件,其中提到如果用sh命令来调用bash时还可能会用到 ~/.profile 文件。
为了直观理解manpage中提到的各种情况,我设计了几个简单的实验来进行验证。

第一步:建立各个对应文件,即在用户目录下分别建立 .bash_profile, .profile, .bashrc和 .bash_logout。假如已经有这些文件了,请先做好备份。每个文件的内容只有一行,命令如下:
代码:
echo 'echo hello from .bash_profile' > .bash_profile
echo 'echo hello from .profile' > .profile
echo 'echo hello from .bashrc' > .bashrc
echo 'echo hello from .bash_logout' > .bash_logout
第二步:设置用文本界面启动,用root身份编辑 /etc/inittab文件,把以id开头的一行改为:
id:3:initdefault:

第三步:退出当前用户,此时会进入文本登录界面。

实验一:
1.输入用户名和密码进行登录。
根据bash的manpage,此时启动的是登录shell,bash将首先执行/etc/profile文件,然后依次查找 ~/.bash_profile, ~/.bash_login, ~/.profile文件,并执行它所找到的第一个。在我们当前的实验中,它应该执行的是 .bash_profile,因此屏幕应该显示 hello from .bash_profile
2.输入:
logout
屏幕应显示 hello from .bash_logout。由于当前是个登录shell,所以退出时会执行 .bash_logout

实验二:
1.在文本登录界面登录,然后输入命令:
sh
屏幕上只会出现另一个命令行提示符。manpage中说,当以sh调用bash时,bash只会执行最简化的启动步骤,不读入任何配置文件。
2.输入:
logout
屏幕出现 bash: logout: not login shell: use `exit' ,说明我们当前的shell不是一个登录shell;
3.输入:
exit
屏幕显示exit,然后回到最初的登录shell
由于我们用sh命令启动的shell不是登录shell,所以它退出时不会执行.bash_logout
4.输入:
sh --login
屏幕显示hello from .profile。看看manpage,--login选项用来启动一个登录shell,此时用sh调用bash,它将会执行/etc/profile以及 ~/.profile,这正是我们得到的结果。
5.输入:
logout
屏幕显示 hello from .bash_logout
由于我们退出的是一个登录shell,所以执行了.bash_logout

实验三:
1.输入:
bash
屏幕显示 hello from .bashrc。因为当前用bash命令启动的不是登录shell,所以执行了.bashrc
2.输入:
logout
屏幕出现 bash: logout: not login shell: use `exit' ,说明我们当前的shell不是一个登录shell;
3.输入:
exit
屏幕显示exit,然后回到最初的登录shell
由于不是登录shell,所以它退出时不执行.bash_logout
4.输入:
bash --login
屏幕显示hello from .bash_profile。--login选项用来启动一个登录shell,此时bash的表现与实验一相同。
5.输入:
logout
屏幕显示 hello from .bash_logout
由于我们退出的是一个登录shell,所以执行了.bash_logout

小结:以上的简单实验直观地显示了bash在何种情况下将执行哪个配置文件,但实际上bash的行为还受到启动选项和一些环境变量的影响,情况将会很复杂。若需要深入研究请认真研读manpage。
其实就是 login shell 和 非 login shell 的区别,bash 手册里写的很清楚。

不过上面的工作还是很好的,辛苦了,呵呵。
多读读文档很多时候事半功倍。

作者: rainman_sl   发布时间: 2004-08-15

我想问一下,此贴的注要用意是什么呢??

作者: hzbiz   发布时间: 2005-02-17

顶一下

作者: redspider   发布时间: 2005-02-18

引用:
作者: windrose
举一个应用的例子。我一直是用init 3(文本模式)启动和登录系统的,但往往登录之后就启动X window,只是偶尔再回到文本界面。可能有兄弟会说,为什么不用init 4(图形登录)?我觉得如果用了init 4,假如想返回纯文本界面,还要再修改inittab,到底不是很方便。于是创建了 ~/.bash_profile,添加如下内容:
代码:
if test x"$DISPLAY" = x""
then
startx
fi
这样,我从shell登录之后,直接就启动X window。假如想回到文本界面,只要退出X就可以了。

windrose老大,我对你的应用实例不太理解。在退出X后还是会在登陆文本界面读取~/.bash_profile时选择进入x的呀?
是我哪里概念不清么?

作者: taurusivy   发布时间: 2006-02-09

根据bash的manpage,此时启动的是登录shell,bash将首先执行/etc/profile文件,然后依次查找 ~/.bash_profile, ~/.bash_login, ~/.profile文件,并执行它所找到的第一个。在我们当前的实验中,它应该执行的是 .bash_profile,因此屏幕应该显示 hello from .bash_profile

windrose兄不是说“执行它所找到的第一个”么?slk下/etc/profile是存在的呀,那就应该只执行这个才对吧?为什么会打印~/,bash_profile呢?
呵呵,刚开始学shell,老大别打偶:)

作者: taurusivy   发布时间: 2006-02-09

bash将首先执行/etc/profile文件,然后依次查找 ~/.bash_profile, ~/.bash_login, ~/.profile文件,并执行它所找到的第一个。

sorry,我写得有点混淆。首先/etc/profile一定是会被执行的,然后bash再找其它的文件,并执行那个列表中它找到的第一个。

作者: windrose   发布时间: 2006-02-09

引用:
作者: taurusivy
windrose老大,我对你的应用实例不太理解。在退出X后还是会在登陆文本界面读取~/.bash_profile时选择进入x的呀?
是我哪里概念不清么?
从X退到文本界面不会再执行 ~/.bash_profile,因为此时并没有开始一个新的bash进程

作者: windrose   发布时间: 2006-02-09

引用:
作者: windrose
bash将首先执行/etc/profile文件,然后依次查找 ~/.bash_profile, ~/.bash_login, ~/.profile文件,并执行它所找到的第一个。

sorry,我写得有点混淆。首先/etc/profile一定是会被执行的,然后bash再找其它的文件,并执行那个列表中它找到的第一个。
明白,谢谢!

作者: taurusivy   发布时间: 2006-02-11

引用:
作者: windrose
bash将首先执行/etc/profile文件,然后依次查找 ~/.bash_profile, ~/.bash_login, ~/.profile文件,并执行它所找到的第一个。

我写得有点混淆。首先/etc/profile一定是会被执行的,然后bash再找其它的文件,并执行那个列表中它找到的第一个。
直接从文本进入X后打开的虚拟终端中的非交互式shell是不是应该查找~/.bashrc 文件? 用户的shell是不是也应该先定为bash ,而不能是sh或csh等等? 我实在是不清楚,只好厚脸皮再问一下.

作者: dgkgnrt   发布时间: 2006-11-25

引用:
作者: dgkgnrt
直接从文本进入X后打开的虚拟终端中的非交互式shell是不是应该查找~/.bashrc 文件? 用户的shell是不是也应该先定为bash ,而不能是sh或csh等等? 我实在是不清楚,只好厚脸皮再问一下.
你可以按我前面说的试验方法试试。
这里说的是bash,一般sh是指向bash的符号链接,csh是怎么样的情况请看csh的文档。

作者: windrose   发布时间: 2006-11-25

引用:
作者: windrose
你可以按我前面说的试验方法试试。
这里说的是bash,一般sh是指向bash的符号链接,csh是怎么样的情况请看csh的文档。
谢谢老大指点!我的系统还有关键问题没有解决(图形与文本不能与换界面),不能在slackware 中做,在fc中又可能与它有出入.慢慢地来,我想一切都会有的.

作者: dgkgnrt   发布时间: 2006-11-25

我试过了,应该是老大的有个地方搞错了。。
应该是">"应该改为">>",
[test@localhost ~]$ echo "echo hello from .bash_profile" > .bash_profile
[test@localhost ~]$ vi .bash_profile
[test@localhost ~]$ cat .bash_profile
echo hello from .bash_profile
[test@localhost ~]$ sh restore_profile.sh
[test@localhost ~]$ echo "echo hello from .bash_profile" >> .bash_profile
[test@localhost ~]$ cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:$HOME/123:

export PATH
unset USERNAME
export LANG=en_US
echo "Hello from .bash_profile"
echo hello from .bash_profile
[test@localhost ~]$ source .bash_profile
Hello from .bash_profile
hello from .bash_profile

有一个是我之前加上去的,所以。。。
不过这确实是个好贴继续顶住!
不要怪我太菜,提出这样显而易见的问题。
见笑了,各位兄弟。

作者: lxy_bhbh   发布时间: 2007-01-15

> 重定向到文件后,文件原来的内容就被新的内容取代了
>> 则是在文件最后添加重定向的内容

该用哪一个要看具体的需要

作者: windrose   发布时间: 2007-01-16

但是,如果这样写:
echo 'echo hello from .bash_profile' > .bash_profile
echo 'echo hello from .profile' > .profile
echo 'echo hello from .bashrc' > .bashrc
echo 'echo hello from .bash_logout' > .bash_logout
那.bash_profile,.profile,.bashrc,.bash_logout都只有一个内容了,那bash还能用吗?
好像路径就没了。

作者: lxy_bhbh   发布时间: 2007-01-17

当然可以用。实际上这些文件在slackware安装之后,用户目录中并不存在。你试试把它们删掉看看。

只有一行内容,其实是有意为之,方便说明问题。

作者: windrose   发布时间: 2007-01-17

哦,我用的是Fedora 不好意思,搜帖子的时候,搜到这了。。。
有时间我再看看slackware
:)

作者: lxy_bhbh   发布时间: 2007-01-18

引用:
作者: lxy_bhbh
哦,我用的是Fedora 不好意思,搜帖子的时候,搜到这了。。。
有时间我再看看slackware
:)
实验的目的是为了了解并正确运用bash。
---我感到在slackware与在fedora中原理是一样的吧。

作者: dgkgnrt   发布时间: 2007-01-19

引用:
作者: dgkgnrt
实验的目的是为了了解并正确运用bash。
---我感到在slackware与在fedora中原理是一样的吧。
对,都是bash,但是,不同的是fedora中一旦有用户,就会在该用户的home下,生成.bash_profile,.bash_logout等,里面是有内容的。而按windrose 兄的意思好像是"实际上这些文件在slackware安装之后,用户目录中并不存在。"所以,认为slackware和fedora在bash文件上还是有点区别的。。。

作者: lxy_bhbh   发布时间: 2007-01-19

引用:
作者: lxy_bhbh
对,都是bash,但是,不同的是fedora中一旦有用户,就会在该用户的home下,生成.bash_profile,.bash_logout等,里面是有内容的。而按windrose 兄的意思好像是"实际上这些文件在slackware安装之后,用户目录中并不存在。"所以,认为slackware和fedora在bash文件上还是有点区别的。。。
就算没有这些文件,bash运行起来也是没有问题的,因为它默认会读 /etc/profile 的设置。再说,我一开始就提醒了要做好文件的备份。

作者: windrose   发布时间: 2007-01-19

引用:
作者: windrose
举一个应用的例子。我一直是用init 3(文本模式)启动和登录系统的,但往往登录之后就启动X window,只是偶尔再回到文本界面。可能有兄弟会说,为什么不用init 4(图形登录)?我觉得如果用了init 4,假如想返回纯文本界面,还要再修改inittab,到底不是很方便。于是创建了 ~/.bash_profile,添加如下内容:
代码:
if test x"$DISPLAY" = x""
then
startx
fi
这样,我从shell登录之后,直接就启动X window。假如想回到文本界面,只要退出X就可以了。
嘿嘿,不错的主意。 四年了, 兄弟还是这里照看着slackware版。

作者: euler   发布时间: 2007-01-19

希望windrose兄不要误会,我按你方法做的而且是肯定做了备份的。
就算没做,我用的也是个测试用的帐号,删掉再重建都可以。

不过,我想你那样做的时候发现这个变化:

[test@localhost ~]$ cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:$HOME/123:

export PATH
unset USERNAME
export LANG=en_US
echo "Hello from .bash_profile"
[test@localhost ~]$ echo 'hello from profile' > .bash_profile
[test@localhost ~]$ source .bash_profile
-bash: hello: command not found
[test@localhost ~]$exit

Last login: Fri Jan 19 13:46:02 2007
-bash: hello: command not found
-bash-3.00$ cat .bash_profile

“-bash: hello: command not found”所以,我才怀疑。。。
不过现在知道了是仍然可用的。
但是,为什么会出现这个呢?我实在搞不懂。

作者: lxy_bhbh   发布时间: 2007-01-19

引用:
作者: lxy_bhbh
[test@localhost ~]$ echo 'hello from profile' > .bash_profile
因为你少了一个 echo

作者: windrose   发布时间: 2007-01-19

。。。。
不好意思,太大意了。。。

作者: lxy_bhbh   发布时间: 2007-01-19

引用:
作者: windrose
举一个应用的例子。我一直是用init 3(文本模式)启动和登录系统的,但往往登录之后就启动X window,只是偶尔再回到文本界面。可能有兄弟会说,为什么不用init 4(图形登录)?我觉得如果用了init 4,假如想返回纯文本界面,还要再修改inittab,到底不是很方便。于是创建了 ~/.bash_profile,添加如下内容:
代码:
if test x"$DISPLAY" = x""
then
startx
fi
这样,我从shell登录之后,直接就启动X window。假如想回到文本界面,只要退出X就可以了。
向你學了一招,很實用我也是int3預設起動.
我自己實際是寫如下,不然每次ctrl + alt + F2 - F6又啟動一次startx.

代码:
test "$(tty)" = "/dev/vc/1" -a x"$DISPLAY" = x"" -a "$(pgrep startx)" = ""
#X11不在且在vc1就跑

作者: jiuny0209   发布时间: 2009-05-16

热门下载

更多