Linux的环境配置文件----.bashrc文件

2023-11-02

.bashrc文件主要保存个人的一些个性化设置,如命令别名、路径等。也即在同一个服务器上,只对某个用户的个性化设置相关。它是一个隐藏文件,需要使用ls -a来查看。

  .bash_history   记录之前输入的命令

   .bash_logout    当你退出时执行的命令

   .bash_profile    当你登入shell时执行

   .bashrc             当你登入shell时执行

  后两个的区别:'.bash_profile'只在会话开始时被读取一次,而'.bashrc'则每次打开新的终端时,都要被读取。

      这些文件是每一位用户对终端功能和属性设置,修改.bashrc可以改变环境变量PATH、别名alias和提示符。具体如何修改会在下面做介绍。

      除了可以修改用户目录下的.bashrc文件外,还可以修改如“/etc/profile”文件、“/etc/bashrc”文件及目录“/etc /profile.d”下的文件。但是修改/etc路径下的配置文件将会应用到整个系统,属于系统级的配置,而修改用户目录下的.bashrc则只是限制在用户应用上,属于用户级设置。两者在应用范围上有所区别,建议如需修改的话,修改用户目录下的.bashrc,即无需root权限,也不会影响其他用户。

PATH环境变量修改

       PATH变量决定了shell 将到哪些目录中寻找命令或程序。如果要执行的命令的目录在 $PATH 中,您就不必输入这个命令的完整路径,直接输入命令就可以了。一些第三方软件没有将可执行文件放到 Linux 的标准目录中。因此,将这些非标准的安装目录添加到 $PATH 是一种解决的办法。此外,您也将看到如何处理一般的环境变量。

首先,作为惯例,所有环境变量名都是大写。由于 Linux 区分大小写,这点您要留意。当然,您可以自己定义一些变量,如'$path'、'$pAtH',但 shell 不会理睬这些变量。

第二点是变量名有时候以'$'开头,但有时又不是。当设置一个变量时,直接用名称,而不需要加“$”,如

“PATH=/usr/bin:/usr/local/bin:/bin”

假如要获取变量值的话,就要在变量名前加'$':
       “echo $PATH”
       则会显示当前设置的PATH变量“/usr/bin:/usr/local/bin:/bin”

否则的话,变量名就会被当作普通文本了:
       “echo PATH”
       显示“PATH”
       处理 $PATH 变量要注意的第三点是:您不能只替换变量,而是要将新的字符串添加到原来的值中。在大多数情况下,您不能用“PATH=/some /directory”,因为这将删除 $PATH 中其他的所有目录,这样您在该终端运行程序时,就不得不给出完整路径。所以,只能作添加:“PATH=$PATH:/some/directory”,假如你要添加/usr/local/arm/3.4.1/bin交叉编译命令,则操作为“PATH=$PATH:/usr/local/arm/3.4.1/bin”
这样,PATH 被设成当前的值(以 $PATH 来表示)+新添的目录。

到目前为止,你只为当前终端设置了新的 $PATH 变量。如果您打开一个新的终端,运行 echo $PATH ,将显示旧的 $PATH 值,而看不到你刚才添加的新目录。因为你先前定义的是一个局部环境变量(仅限于当前的终端)。

要定义一个全局变量,使在以后打开的终端中生效,您需要将局部变量输出(export),可以用"export"命令:

       export PATH=$PATH:/some/directory

现在如果打开一个新的终端,输入 echo $PATH ,也能看到新设置的$PATH 了。请注意,命令'export'只能改变当前终端及以后运行的终端里的变量。对于已经运行的终端没有作用。

       为了将目录永久添加到 $PATH ,只要将"export"的那行添加到.bashrc或/etc/bashrc文件中。

  使用命令:

  sudo gedit ~/.bashrc

别名

       一般在.bashrc或/etc/bashrc文件里有几句话

       alias rm='rm -i'

       alias cp='cp -i'

       alias mv='mv -i'

       有了这几句话,当在终端中输入“mv test.c led.c”实际上输入的是“mv -i test.c led.c”,所以说alias是一个别名。你可以在该配置文件中添加自己风格的别名,如“alias ll='ls -l'”,只需要在终端中输入“ll”就实现了“ls -l”的功能。还可以添加其他语句,随自己喜好。

 提示符

  当打开一个控制台(console) 时,最先看到的就是提示符(prompt),如:[root@localhost ~]#

  在默认设置下,提示符将显示用户名、主机名(默认是'localhost')、当前所在目录(在 Unix 中,'~'表示您的 home 目录)。按照传统,最后一个字符可以标识普通用户($),还是'root'(#)。可以通过 $PS1 变量来设置提示符。

  命令“echo $PS1”,将显示当前的设定。其中可用字符的含义在 man bash 的'PROMPTING'部分有说明。

如何才能完成理想的设置呢?对于健忘的初学者来讲,默认设定有些不友好,因为提示符只显示当前目录的最后一部分。如果你看到象这样的提示符

      [wsf@localhost bin]$
      则当前目录可能是'/bin'、'/usr/bin'、'/usr/local/bin'及'/usr/X11R6/bin'。当然,你可以用

pwd (输出当前目录,print working directory)

能不能叫 shell 自动告诉你当前目录呢?

当然可以。这里我将提到的设定,包括提示符,大都包含在文件'/etc/bashrc'中。您可以通过编辑各自 home 目录下的'.bash_profile'和'.bashrc'来改变设置。

在 man bash 中的'PROMPTING'部分,对这些参数(parameter)有详细说明。您可以加入一些小玩意,如不同格式的当前时间,命令的历史记录号,甚至不同的颜色。

一种更适当的设定:
       PS1="[\u: \w]\\$ "
      这样,提示符就变成:
      [wsf: /usr/bin]$
      你可以通过命令 export 来测试不同的设置(比如,export PS1="\u: \w\\$ ")。如果找到了适合的提示符,就将设置放到您的'.bashrc''中。这样,每次打开控制台或终端窗口时,都会生效。

引用https://www.cnblogs.com/testlife007/p/6548698.html

 

转载于:https://www.cnblogs.com/yuemw/p/8081219.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux的环境配置文件----.bashrc文件 的相关文章

  • 选择多个模式的 awk 代码

    这是我的输入文件 比如modified txt r4544 n479826 2012 08 28 07 12 33 0400 Tue 28 Aug 2012 1 line Changed paths M branches 8 6 0 con
  • 如何使用 shell 脚本解压所有 .tar.gz?

    我试过这个 DIR path tar gz if ls A DIR 2 gt dev null then echo not gz else tar zxvf path tar gz C path tar fi 如果该文件夹有一个 tar 则
  • bash 脚本中的未绑定变量

    在调试我的脚本时 我变得绝望 我使用了我的高级同事向我推荐的一些结构 但我不知道如何使其正常工作 bin bash x set ueo pipefail exec gt tmp dq log source BASH SOURCE env p
  • 基于文件位置而不是当前工作目录的相对路径[重复]

    这个问题在这里已经有答案了 Given some txt dir cat sh cat sh 的内容如下 cat some txt 然后运行 cat sh inside dir运行时工作正常 dir cat sh与dir才不是 我预计这是由
  • 如何在 .zip 文件中使用 grep

    有 3 个文件 a csv b csv c csv 压缩为 abh zip 现在可以在 abh zip 上执行 grep 命令 是否有任何通配符 仅对里面的 c csv 文件运行 grep压缩 如果你有zipgrep 据我所知 它是随zip
  • 检查 jar 是否从 shell 运行

    我有一个 java jar 程序 我试图在我的机器启动时运行它 理想情况下 shell 脚本将每 60 秒检查一次以确保 jar 正在运行 我如何检查 jar 是否在 centos 上运行 这似乎不起作用 我当前的 sh 文件 bin ba
  • 使用终端(或 Shell)将文件的一部分复制/粘贴到另一个文件中

    我正在尝试将 txt 文件的一部分从行号 n 复制到行号 n y 假设 1000 到 1000000 我尝试过与运营商合作sed 并且失败了 这是我尝试过的命令 sed n 1000 1000000p path first file gt
  • 编写健壮的 shell 脚本有哪些规则?

    I recently erased part of my home directory with a shell script I wrote Fortunately I did hit Ctrl C fast enough to avoi
  • 在 bash 脚本中设置变量[重复]

    这个问题在这里已经有答案了 test sh 包含 A 1 B 2 我将 test sh 设置为 chmod 777 我用两个参数启动脚本 test sh first last 然后我通过输入以下内容对其进行了测试 echo FirstVar
  • shell 脚本中的 Telnet

    如何在 shell 脚本中运行 telnet 并在远程服务器上执行命令 出于安全原因 我没有在我的Solaris 机器上安装expect 我也没有perlnet telnet模块已安装 那么如果不使用expect和perl我该怎么办呢 我尝
  • MongoDB - 编辑器变量 - MongoDB shell - Windows 7

    EDITOR 变量功能真的可以在 Windows 7 上使用吗 我正在读一篇文章 说一旦我们设置了 EDITOR 变量在 mongorc js 中 我们只需在 shell 中输入 编辑变量名 and var name将被加载到编辑器中 在我
  • linux + ksh + 向下舍入或向上舍入 - 浮点数

    在我的 ksh 脚本中 我只需要计算整数 有时我会得到浮点数 例如 3 49 或 4 8 等 所以我需要根据以下规则将浮点数转换为整数 示例 3 49 will be 3 2 9 will be 3 4 1 will be 4 23 51
  • 如何使用 echo 命令写入并附加到文件

    我正在尝试编写一个脚本 它将使用 echo 并写入 附加到文件 但我的语法中已经有了 字符串 说 echo I am Finding difficult to write this to file gt file txt echo I ca
  • Linux find 命令权限被拒绝

    我想过滤掉不必要的信息 权限被拒绝 这些是命令 的输出find type f name sources list find run lxcfs Permission denied find run sudo Permission denie
  • 拼写检查 shell 脚本

    我有一些疑问 我对一个应该是简单拼写检查器的脚本有疑问 它的目的是 当发现错误的单词时 它会提示用户输入该单词的正确拼写 如果用户输入正确的拼写 则会显示更正的单词以及错误的单词 下面 在读完所有单词之后 但是 如果用户只是按 Enter
  • 如何从脚本编辑 /etc/sudoers?

    我需要编辑 etc sudoers从脚本中添加 删除白名单中的内容 假设我有一个可以处理普通文件的命令 我如何将其应用到 etc sudoers 我可以复制并修改它 然后有visudo用修改后的副本替换原始版本 通过提供我自己的脚本 EDI
  • Ansible - 当至少一项在循环中失败时跳过任务

    我正在使用 sqlplus 运行一些 SQL 脚本 在运行之前 我从该目录获取所有 sql 文件列表并将其存储在sql out如下所示 问题是 如果其中一个 sql 脚本失败 其余 sql 脚本仍然会执行 如果任何一个脚本失败 我想完全跳过
  • 在 Linux 中重新启动时,新创建的文件变为 0 kb(数据被覆盖为空)

    我遇到了一个奇怪的问题 这让我发疯 当前的任务是在 root 用户第一次登录时启动一组文件 并在同一用户第二次登录时启动另一组文件 我决定使用 profile 和 bashrc 文件 并在第一次登录期间发生的任务结束时重新加载 bashrc
  • Python 脚本:每次打印新行到 shell,而不是更新现有行

    说到Python 我是个菜鸟 我有一个 python 脚本 它给我这样的输出 last ZVZX W3vo9I Downloading video webpage last ZVZX W3vo9I Extracting video info
  • 在压缩存档内的文本文件上运行“head”,而不解压存档

    问候 我接手了之前的团队并编写了处理 csv 文件的 ETL 作业 我在 ubuntu 上结合使用 shell 脚本和 perl csv 文件很大 它们以压缩档案形式到达 解压后 很多都超过 30Gb 是的 那是 G 旧进程是在 cron

随机推荐

  • HX711传感器调试好的代码

    HX711传感器调试好的代码 180kg量程 基于STM32f103rct6 c8t6开发的程序 可以用作项目开发 也可以拿来学习用 精度小数点两位数 编号 134629532677340c编程鬼
  • OpenWrt添加软件包之一概述

    参考 openwrt 官方文档 下面用
  • 在Android Studio3.6中打开Android Device Monitor的一种解决方案

    前言 从Android Studio 3 0开始 Android Device Monitor就被弃用了 3 1被废弃 并于3 2被移除 即不能再通过Tools gt Android gt Android Device Monitor来打开
  • JAVA获取机器的MAC地址

    JAVA获取机器的MAC地址 需求 获取机器的mac地址 问题 一些国产操作系统获取不到MAC地址 以下搜集了一些获取mac地址的方法 1 获取MAC地址 ps 该方法在银河麒麟中可用 public static String getMAC
  • 网站域名服务器 地址查询,查看网站dns域名服务器ip地址查询

    查看网站dns域名服务器ip地址查询 内容精选 换一换 公网域名解析是基于Internet网络的域名解析过程 可以把人们常用的域名 如www example com 转换成用于计算机连接的IP地址 如1 2 3 4 公网域名解析支持通过直接
  • 用Python搭建匿名代理池

    01 写在前面 常听到很多人抱怨自己的IP因爬虫次数太多而被网站屏蔽 不得不频繁使用各种代理IP 却又因为网上的公开代理大部分都是不能使用 而又要花钱花精力去申请VIP代理 几番波折又遭屏蔽 特此写一篇如何利用Python搭建代理池的文章
  • adc0832工作原理详解_ADC0832

    include include ADC0832 c code uchar seven seg 0xc0 0xf9 0xa4 0xb0 0x99 0x92 0x82 0xf8 0x80 0x90 共阳数码管0 9 0时为有效断 uchar c
  • 提升工作效率,这5个Jupyter Notebook “插件”,你有必要了解!

    点上方 菜鸟学Python 选择 星标 471篇原创干货 第一时间送达转自 机器之心 Jupyter Notebook 是一个很棒的教学 探索和编程环境 但其功能不足也是出了名的 幸好 有许多方法可以改进这个不错的工具 如 Jupyter
  • 从零搭建若依(Ruoyi-Vue)管理系统(5)--整合日志实现

    本章结束后对应的节选代码文件 Gangbb Vue 05 Log 项目地址 https github com Gang bb Gangbb Vue 历史遗留TODO 第三章 mybatis缓存暂时没用到 后面整合redis后用redis做缓
  • python学会基础之后要做什么检查_Python基本语法学完了,接下来不知道要干什么?...

    不知道题主打算往什么方向发展 我说说自己的学习过程 题主可以适当参考 我学完语法过后马上开始学习爬虫 因为觉得爬虫很酷 很有趣 跟着网上的教程写了几个爬虫过后 发现自己只知道要这么写 但不知道为什么要这样写 于是又花了一点时间 学习了HTM
  • nginx代理请求到内网不同服务器

    需求 之前用的是frp做的内网穿透 但是每次电脑断电重启 路由或者端口会冲突 现在使用汉土云盒替换frp 需要把公网ip映射到任意一台内网服务器上 然后在这台内网服务器上用Nginx做代理即可访问内网其它服务器 如果内网仅一台服务器则不需要
  • nginx-1.20*安装check模块

    主动地健康检查 nignx定时主动地去ping后端的服务列表 当发现某服务出现异常时 把该服务从健康列表中移除 当发现某服务恢复时 又能够将该服务加回健康列表中 使用第三访模块nginx checkcheck模块下载 1 若健康检查包类型为
  • Qt之如何获取主窗口的指针

    QMainWindow getMainWindow foreach QWidget w qApp gt topLevelWidgets if QMainWindow mainWin qobject cast
  • NIO是什么?适用于何种场景?

    NIO与IO的最大区别就是 当读取数据的时候 NIO读取之后需要缓冲 是面向缓冲区的 而IO不需要缓冲 是面向流的 IO是阻塞的 就意味着当一个线程调用read 或write 时 该线程被阻塞 直到有一些数据被读取 或数据完全写入 该线程在
  • 支持STEM学习的九个方式

    随着STEM教育的兴起 一些国家把STEM教育提升到了国家战略层面 相继出台了促进STEM人才培养的政策措施 加大STEM教育的公共和私人投资 整合政府 大中小学 企业 科研机构 社区和家庭多方力量 共同促进STEM教育发展 接下来 格物斯
  • 如何在树莓派上使用Nginx搭建本地站点并通过内网穿透实现远程访问

    文章目录 1 Nginx安装 2 安装cpolar 3 配置域名访问Nginx 4 固定域名访问 5 配置静态站点 安装 Nginx 发音为 engine x 可以将您的树莓派变成一个强大的 Web 服务器 可以用于托管网站或 Web 应用
  • svg转换png,svg转png格式步骤

    svg转换png svg转png格式步骤 在过去一年多的工作经历中 我接触到了大量的图片 认识到了各种图片格式 每种格式图片拥有的属性是不一样的 就像我们每个人所具备的属性性格特点不同一个道理 比如SVG是一种图形文件格式 用户可以直接用代
  • 网络错误代码

    网络错误代码 又称ADSL错误代码 ADSL Asymmetric Digital Subscriber Line 非对称数字用户环路 是中国电信报提供的一种新的数据传输方式 它因为上行和下行带宽不对称 因此称为非对称数字用户线环路 它采用
  • 混淆矩阵的计算方式

    下图中有三个序列 L表示标签值 P表示预测值 n表示分类数 我们需要计算n L P来计算预测结果值 当L和P都取最大时 得出的结果就是其最大计算空间 例如下图 L 0 5 P 0 5 则n L P 0 35 然后我们将n L P映射到36维
  • Linux的环境配置文件----.bashrc文件

    bashrc文件主要保存个人的一些个性化设置 如命令别名 路径等 也即在同一个服务器上 只对某个用户的个性化设置相关 它是一个隐藏文件 需要使用ls a来查看 bash history 记录之前输入的命令 bash logout 当你退出时