linux下的source命令及~/.bashrc, ~/.bash_profile详解_source ~/.bashrc_乞力马扎罗の黎明的博客-程序员秘密

技术标签: Linux  运维  linux  bash  

一.登录Linux时要执行文件的过程

在登录Linux时要执行文件的过程如下:
在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个,

执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。

如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件。

执行顺序为: /etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout

二、 各个文件的解释

(1) /etc/profile:(系统环境变量) 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。)

(2) /etc/bashrc: (用户变量)为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取(即每次新开一个终端,都会执行bashrc)。

(3) ~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。默认情况下,设置一些环境变量,执行用户的.bashrc文件。

(4) ~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。

(5) ~/.bash_logout: 当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是"父子"关系。

(6) ~/.bash_profile: 是交互式、login 方式进入 bash 运行的~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。

三、linux下的source命令

source命令也称为“点命令”,也就是一个点符号(.),是bash的内部命令。
功能:使Shell读入指定的Shell程序文件并依次执行文件中的所有语句
source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。
用法:

source filename 或 . filename

source命令(从 C Shell 而来)是bash shell的内置命令;点命令(.),就是个点符号(从Bourne Shell而来)是source的另一名称。

四、 source filename 与 sh filename 及./filename执行脚本的区别在那里呢?

1.当shell脚本具有可执行权限时,用sh filename与./filename执行脚本是没有区别得。./filename是因为当前目录没有在PATH中,所有"."是用来表示当前目录的。
2.sh filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export。
3.source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。

举例说明:

1.新建一个test.sh脚本,内容为:A=1
2.然后使其可执行chmod +x test.sh
3.运行sh test.sh后,echo $A,显示为空,因为A=1并未传回给当前shell
4.运行./test.sh后,也是一样的效果
5.运行source test.sh 或者 . test.sh,然后echo $A,则会显示1,说明A=1的变量在当前shell中

五、shell脚本中常用

1、修改当前用户信息后,让其立刻生效
~/.bash_profile用户当前用户,只在登录时读取一次,输入专用于自己使用的shell信息
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取

source ~/.bash_profile  
source ~/.bashrc 

 注释:

   ~/是进入当前用户的主目录

  .bashrc 是进入.bashrc文件夹,就是用户目录下的名字是.bashrc的目录ls -al #显示隐藏文件

ls -al #显示隐藏文件

 2、修改/etc/profile文件后,让其立刻生效

/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行

source /etc/profile

3、脚本开头一般都会有

source /etc/profile
source ~/.bash_profile
#!/bin/bash

 

--------------------------------------------------------以下无正文------------------------------------------------------

注:仅供学习,记录问题和参考,共勉!

参考转载文章:
1、linux下的source命令_wangyangkobe的博客-程序员秘密_linux source命令

2、 linux下的source命令及~/.bashrc, ~/.bash_profile详解_小路转角处的博客-程序员秘密_source ~/.bashrc

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_39715000/article/details/125022516

智能推荐

怎么让matlab坐标轴纵轴只显示整数,Matlab关于把如何数值在坐标轴显示的问题。..._壮猫咪attorney的博客-程序员秘密

m = 100;X = zeros(m,m);V = zeros(m,m);n=randint(1,1,[15,25]);data=randperm(95);%1到100随机排列y=data(1:n);%取前n个整数i=sort(y);%将y从小到大排列X(i,1)=i;V(i,1)=randint(1,n,[1,5]);%随机产生速度for t=1:100randif rand>=0.6X...

maven项目如何启动运行---发布到tomcat中_张小凡vip的博客-程序员秘密

前面两篇文章:新建maven框架的web项目以及将原有项目改成maven框架之后,我们已经有了maven的项目那么maven项目到底怎么启动呢如果我们直接在myeclipse中按以前的启动方法是不行的。(详情下一篇文章会讲到:在myeclipse中启动maven项目)但是maven项目可以生成本地war包手动移到tomcat,也可以自动发布到

Windows 7硬盘安装CentOS 6.4 双系统 (WIN7下硬盘安装Linux(Fedora 16,CentOS 6.2,Ubuntu 12.04))..._weixin_38166726的博客-程序员秘密

WIN7下硬盘安装Linux(Fedora 16,CentOS 6.2,Ubuntu 12.04) 最近在看《鸟哥私房菜:基础学习篇》,觉得很不错,想要用U盘装个windows 7 和 CentOS 6.4的 双系统,在网上找了很多教程,觉得乱七八糟的,弄得很复杂,而且很多都不是很完整,对于新手实在是伤不起。最终自己用U盘装了两次,...

使用JS代码自动填写问卷星问卷调查_自动填写调查问卷的代码_「已注销」的博客-程序员秘密

测试效果1.不保证答案正确性,因为是随机的,不适合专门的数据采集,仅供大家需要大量数据样本时使用或者娱乐一下2.多次操作或者敏感操作需要手动输入验证码3.少部分特殊要求的多选题无法自动选择使用方法:1.在浏览器中新建书签,书签名字随便写,网址为后边贴的代码        --以google浏览器为例:截图如下                           ...

thinkphp学习_第三天_2_change_for_you的博客-程序员秘密

配置文件信息1、在ThinkPHP/Conf下有关于thinkphp的配置文件信息,里面都有中文注释,里面的配置信息可以在要用的项目的Conf下重写一次,只针对本项目的配置,配置文件以本项目的配置文件为主/2、当需要加载额外的配置文件时,可以在config.php中加上 'LOAD_EXT_CONFIG' => 'test',    test为需要加载的配置文件名ech

marlin固件烧录教程_Marlin固件的步进电机控制代码解析_weixin_39638305的博客-程序员秘密

对于入行一年的我来说,桌面级FDM打印机很多功能细节,我还没能仔细了解:藏在固件代码背后的信息内容,我也远没有完全消化。这正说明一个简单的道理:消化一段代码的最有效方法是对其移植或者重写。换言之,仅仅是走马观花的浏览一遍,除非自己曾经编写过类似程序,很难能透彻的领会固件代码的精髓。特别是对Marlin这个数百名(可能不准确)开源工程师贡献和维护的大型固件项目。Marlin的步进电机驱动子系统,是由...

随便推点

uni-app快速入门开发一个项目_时光依旧001的博客-程序员秘密

hello 大家好,我是老张,有的人称呼我为张工。一个不务正业的PHP开发者,立志于做一个全栈开发工程师。今天呢,我想补充一章关于uni-app 如何开发,如何建立项目,如何使用hbuildx这个编辑器开发项目的,之前忘记考虑了一些问题没有去考虑这个事情,今天索性就把这个章节补充进来.创建项目创建项目有两个方式创建,第一个是通过vue-cli命令行的方式,另外一个是使用HbuildX可视化创建,对于没有前端开发经验的小伙伴我推荐使用HbuildX 可视化创建,主要是简单,方便。工具的出现就是为.

Neutron总结-OpenStack中的网络隔离_dylloveyou的博客-程序员秘密

最近,关于xx公有云的用户网络,由于隔离问题引发安全讨论,大家顿时对啥“经典网络”、“VPC”等概念兴趣大增,大家的热议中多次提到AWS的VPC,亚马逊的AWS怎么搞的,我们不得而知,但是我们可以聊聊OpenStack的,毕竟它一直在模仿AWS嘛。

图解Python 【第七篇】:网络编程Socket_weixin_30342827的博客-程序员秘密

本节内容一览图:前言总结:Python 提供了两个基本的 socket 模块。 第一个是 Socket,它提供了标准的 BSD Sockets API。 第二个是 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。注意:socket模块创建的服务无法进行多进程的处理下面讲的是Socket模块功能一、Soc...

搬水果【吉林大学】_吉大计算机考研有上机吗_SYaoJun的博客-程序员秘密

解题思路:纯粹的哈夫曼树模板,注意一下边界就行。#include #include #include using namespace std;int main(){ int n; priority_queueint,vectorint>,greaterint> > q; while(scanf("%d",&n) != EOF&&n!=0){ whil

终于会用c#中的delegate(委托)和event(事件)了_wyl6346427的博客-程序员秘密

一、开篇忏悔对自己最拿手的编程语言C#,我想对你说声对不起,因为我到现在为止才明白c#中的delegate和event是怎么用的,惭愧那。好了,那今天就趁月黑风高的夜晚简单来谈谈delegate和event的简单用法吧,希望能给初学者带来帮助。PS:别像我那样学了几年c#到头来都不知道delegate和event怎么用。二、delegate到底是什么东西孩子,C语言总学过吧,如果你学得

推荐文章

热门文章

相关标签