设为首页 加入收藏

TOP

Linux的登陆脚本
2014-11-23 22:32:52 】 浏览:9394
Tags:Linux 登陆 脚本

看一篇debian的学习笔记里面说,.bash_profile是bash全局设置文件,而.bashrc是当一个bash shell调用另一个bash shell时候读取的设置。我在配置debian的时候,参照网上的一个做法,将/etc/.bash_profile里面内容复制到/root/.bashrc内,并将下列反注释掉


if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi


使root帐户具有table补全的能力。


那么,我的问题就在这里,我登录linux时候,直接登录的root帐户,并没有调用其他的shell阿,那么怎么需要将这些复制到.bashrc中,并反注释掉这些,才能具有补全作用?如果我直接将.bash_profile中的这几句反注释掉,是不是root帐户也具有了补全的能力了?我安装系统时候,新建了一个用户,这个用户并不需要这一步设置,就直接具有补全作用了,这个帐户下的.bashrc有上面的内容了。这是为什么?


1. 首先要分清login shell和non-login shell, login shell是用户登录的时候启动的带身份验证的shell, /etc/passwd中可以看到,username对应的shell name,常见的是bin/bash. 当login shell启动后,会读入两个文件,/etc/profile 和用户根目录下的.bash_profile(如果没有,会再执行~/.bash_login, ~/.profile).


2. shell还分交互式shell和非交互式shell, 显然login shell也是一种交互式的shell。对于non-login的交互式shell, 启动时会执行~/.bashrc,而~/.bashrc中又会去执行/etc/bashrc. 对于login shell,为了更一致一些所以会在~/.bash_profile中执行~/.bashrc,所以对.bashrc的修改能影响所有的交互式shell。


3. 新添加一个用户时,会添加一个记录到/etc/passwd,创建用户的home目录,将/etc/skel目录下的内容,拷贝到home目录下,skel中包含了用户home目录的基本文件和目录结构,包括.bashrc.(当然这些都是可以用户自定义的,如useradd -k -m 什么的)。


4 .bashrc确实是为non-login 交互式shell准备的。login shell并不直接读取,但是在.bahs_profile中会执行。

5 .对于login shell改bash_profile当然也可以。所以是修改.bash_profile还是.bashrc,要看具体的情况。

6 .至于新建用户的问题,看看/etc/skel。


当然最有效的就是把.bash_profile改了,登录看看,往/etc/skel里添加几个文件,改改.bashrc,再创建一个新用户看看。鉴于linux的多样性,实践+理解才是王道。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Ubuntu中安装Xdebug调试跟踪程序.. 下一篇自己定制一小型Linux系统mylinux

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目