Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1639580
  • 博文数量: 268
  • 博客积分: 8708
  • 博客等级: 中将
  • 技术积分: 3764
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-06 15:58
文章分类

全部博文(268)

文章存档

2014年(1)

2013年(15)

2012年(23)

2011年(60)

2010年(51)

2009年(12)

2008年(59)

2007年(47)

分类: BSD

2009-04-07 15:55:40

和Bash的环境设定有关的档案有
  /etc/profile (主要)
  $HOME/.bash_profile (主要)
  $HOME/.bash_login
  $HOME/.profile
  $HOME/.bash_logout (主要)
  $HOME/.bashrc (主要)
  /etc/bashrc
  说明如下:
  * 登入(login)时
  # 先执行 /etc/profile
  # 接着bash会检查使用者的自家目录中,是否有 .bash_profile 或者 .bash_login
  或者 .profile,若有,则会执行其中一个,执行顺序为:
  # .bash_profile 最优先
  # .bash_login其次
  # .profile 最后
  这三个档案只有在登入时,才会被bash读取
  * 登出(exit/logout)时
  bash会检查使用者自家目录中是否有 .bash_logout,若有,则bash会执行其中的指令
  * 登入后启动一个新的 shell :
  此时我们称之为一个 subshell, 也就是说在命令列中键入 bash, 除了原先登入时的bash
  之外, 又另外启动了一个新的 bash shell.
  bash 会检查使用者的自家目录中是否有 .bashrc,若有则予以执行
  * 实验:
  在各档中加入 echo 指令, 以观察其执行顺序.
  各档案用途说明
  * /etc/profile 由 root 所控制, 用来设定适合全体使用者的shell环境
  * 若使用者自己觉得 /etc/profile 的设定, 并不合意, 可以修改自家目录中的 .bash_profile
  * 既然有了 .bash_profile, 为何要有 .bash_login 及 .profile ?这是因为有些人可能是从
  Bourne shell 移转过来的, 那么, 只要将 Bourne shell 主要的起动档 .profile 移到自
  家目录中, 放弃使用 .bash_profile 及 .bash_login 即可继续沿用以前的设定环境
  * .bash_login 存在理由或许和 c shell 有关, 但因为 bash 和 c shell 二者语法并不完全
  相容, 因此, 并不建议将 c shell 的启动档直接移过来使用.
  * .bashrc 则是用来设定 subshell 的环境的, 之所以要有这个 .bashrc 是为免 subshell产
  生时, 又重覆将 /etc/profile 执行一次. 我们发现 .bashrc 中已预先会去执行 /etc/bashrc
  的指令, 这表示, 或许 root 会将产生 subshell 时的环境设好了,使用者只要沿用 /etc/bashrc
  的内容, 应该不会有任何问题.
  * .bash_logout 是使用者登出主机之前, 会去执行的设定档, 如果使用者希望在他登出系统之
  后, 能帮他自动处理一些琐事, 比如: 清除暂存档, 清除萤幕等, 可以在这个档案中加以设定.

系统的预设参数文件:/etc/profile。

查询变量:env,export,set


env 是 environment (环境) 的简写,列出来所有的环境变量。
export 执行后跟env是一样的内容。不过,export 还能将变量转变成环境变量。想要让该变量内容继续的在子程序中使用,那么就请执行:
export 变量
这个东西用在『引用他人的档案或者其它程序』时,相当的重要的。基本上,环境变量可以让子程序继续引用的原因,是因为:
1. 当启动一个 shell ,操作系统分配一记忆区块给 shell 使用,此区域之变量可以让子程序存取;
2. 利用 export 功能,可以让变量的内容写到上述的记忆区块当中(环境变量);
当加载另一个 shell 时 (亦即启动子程序,而离开原本的父程序了),子 shell 3. 可以将父 shell 的环境变量所在的记忆区块导入自己的环境变量区块当中。

set 这个指令除了会将环境变量列出来之外,其它我们的自订变量,都会被列出来。因此,想要观察目前 shell 环境下的所有变量,就用 set 即可!

阅读(1143) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~