linux下 bash_profile和bashrc区别

【.bash_profile 与 .bashrc 的区别】
.bash_profile is executed for login shells, while .bashrc is executed for interactive non-login shells.

【login shell 与 non-login shell 的区别】
1、当你直接在机器login界面登陆、使用ssh登陆或者su切换用户登陆时,.bash_profile 会被调用来初始化shell环境
Note:.bash_profile文件默认调用.bashrc文件
.bash_profile中有如下内容
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi 
2、当你不登陆系统而使用ssh直接在远端执行命令,.bashrc 会被调用
3、当你已经登陆系统后,每打开一个新的Terminal时,.bashrc 都会被再次调用。

测试准备工作
hclient2主机hadoop用户家目录下执行
[[email protected] ~]$ echo "invoke hclient2:~/.bashrc">>.bashrc
[[email protected] ~]$ echo "invoke hclient2:~/.bash_profile">>.bash_profile

Login Shell
1、窗口登陆
Red Hat Enterprise Linux Server release 6.3 (Santiago)
Kernel 2.6.32-279.el6.x86_64 on an x86_64

hclient2 login: hadoop
Password:
Last login: Mon Feb 25 23:03:45 on tty1
invoke hclient2:~/.bashrc
invoke hclient2:~/.bash_profile

[[email protected] ~]$
2、SSH 登陆
[[email protected] ~]$ ssh hclient2
Last login: Mon Feb 25 22:42:19 2013 from hserver
invoke hclient2:~/.bashrc
invoke hclient2:~/.bash_profile
[[email protected] ~]$
3、su 登陆
[[email protected] ~]# su - hadoop
invoke hclient2:~/.bashrc
invoke hclient2:~/.bash_profile

Non-login Shell:
Note: ssh ...[[email protected]] hostname [command]
If command is specified, it is executed on the remote host instead of a login shell.
[[email protected] ~]$ ssh hclient2 hostname
invoke hclient2:~/.bashrc
hclient2

【故】若要配置环境变量之类,最保险是写在 .bashrc 文件中。因为不管是登陆还是不登陆,该文件总会被调用!

时间: 2024-10-18 16:28:28

linux下 bash_profile和bashrc区别的相关文章

linux 下 /bin /sbin 的区别 -- (转)

/bin,/sbin,/usr/bin,/usr/sbin区别 /  : this is root directory                root 用户根目录 /bin : commands in this dir are all system installed user commands    系统的一些指令 /sbin:  commands in this dir are all system installed super user commands  超级用户指令 系统管理

Linux下profile和bashrc四种的区别

/etc/profile./etc/bashrc.~/.bash_profile.~/.bashrc很容易混淆,他们之间有什么区别?它们的作用到底是什么?/etc/profile: 用来设置系统环境参数,比如$PATH. 这里面的环境变量是对系统内所有用户生效的./etc/bashrc:  这个文件设置系统bash shell相关的东西,对系统内所有用户生效.只要用户运行bash命令,那么这里面的东西就在起作用.~/.bash_profile: 用来设置一些环境变量,功能和/etc/profil

bash_profile和bashrc区别

[.bash_profile 与 .bashrc 的区别].bash_profile is executed for login shells, while .bashrc is executed for interactive non-login shells. [login shell 与 non-login shell 的区别]1.当你直接在机器login界面登陆.使用ssh登陆或者su切换用户登陆时,.bash_profile 会被调用来初始化shell环境Note:.bash_prof

关于“.bash_profile”和“.bashrc”区别的总结

0.前言 项目环境部署是自己的薄弱项,一些简单的服务,照着搜索来的步骤能凑合部署成功,但并不明白其中的原理,偶尔遇到一些ERR,就抓瞎,无从下手.项目环境部署,需要一些基础服务,如java环境,tomcat环境.mysql等等:服务部署成功后,还需要给其配置环境变量:要配置环境变量,就要用到什么bashrc或bash_profile文件,可是这文件有啥区别,一直不明白,今天看到这篇文章,结合自己实践,分享给各位. 1.bash的startup文件 Linux shell是用户与Linux系统进行

/etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc区别

/etc/profile./etc/bashrc.~/.bash_profile.~/.bashrc很容易混淆,他们之间有什么区别?它们的作用到底是什么? /etc/profile: 用来设置系统环境参数,比如$PATH. 这里面的环境变量是对系统内所有用户生效的. /etc/bashrc:  这个文件设置系统bash shell相关的东西,对系统内所有用户生效.只要用户运行bash命令,那么这里面的东西就在起作用. ~/.bash_profile: 用来设置一些环境变量,功能和/etc/pro

linux下exit()和_exit()区别

平时一直在用exit()函数,但是今天看源码时竟然看到了_exit()函数,想知道它们的区别,所以就查查资料,写了下来!   #include<stdlib.h>   void exit(int status); 不像fork那么难理解,从exit的名字就能看出,这个系统调用是用来终止一个进程的.无论在程序中的什么位置,只要执行到exit系统调用,进程就会停止剩下的所有操作,清除包括PCB在内的各种数据结构,并终止本进程的运行.请看下面的程序: #include<stdlib.h>

Unix / Linux 下 nohup 和 &amp; 的区别

声明:本文首发 简单教程,网址为 https://www.twle.cn/t/332#reply0 就在刚刚回家的路上,被前同事夺命三连 call 呼唤解决一个问题:为啥放在 crontab 里的命令放在 Shell 会进入假死状态? 那我就问了?什么是假死状态? 同事说,就是一直不会执行完毕,占着 Shell,不能做其它事情. 多次沟通后,才知道他写的这个是一个守护进程似的死循环程序,一旦启动除非发生意外,否则不会自己退出. 那肯定,很显然,会占着 Shell 啊. nohup 和 & 我给的

Linux下关机命令的区别 (halt,poweroff,reboot,shutdown,init)

在Linux下一些常用的关机/重启命令. 1.shutdown shutdown命令安全地将系统关机.    有些用户会使用直接断掉电源的方式来关闭linux,这是十分危险的.因为linux与windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失﹐使系统处于不稳定的状态﹐甚至在有的系统中会损坏硬件设备.而在系统关机前使用shutdown命令﹐系统管理员会通知所有登录的用户系统将要关闭.并且login指令会被冻结﹐即新的用户不能再登录.直接关机或者延迟一定的时间才关机都是可

标准c库函数与Linux下系统函数库 区别 (即带不带缓冲区的学习)

我们都知道,C语言在UNIX/Linux系统下有一套系统调用(系统函数),比如文件操作open().close().write().read()等,而标准C语言的库函数中也有一套对文件的操作函数fopen().fclose().fwrite().fread()等..那么同样是对文件的操作函数,标C与UC有什么区别呢?是标C效率高还是UC效率高呢?今天就让我们来一探究竟. 程序作用:将0~999999这1000000个整型数据写入文件. 1.标准C实现大量数据写入文件: /*文件名test1.c*