linux用户sourcebashrc或(linuxsourceprofile)

linux用户sourcebashrc或(linuxsourceprofile)

浏览次数:
信息来源: 用户投稿
更新日期: 2025-11-08
文章简介

linux用户source.bashrc或.profile找不到文件之前在debian遇到这种情况,新增加的用户,每次登入的路径都显示sh-42$必须su-用户名才能恢复正常,并且用户目录下的.

2025阿里云双十一服务器活动

linux用户source.bashrc或.profile找不到文件

之前在debian遇到这种情况,新增加的用户,每次登入的路径都显示sh-42$必须su-用户名才能恢复正常,并且用户目录下的.bashrc和其他的配置文件都没有办法source,导致一系列问题。

如果是这种情况,极有可能是linux的默认启动shell不正确,su切换成超级用户,vi/etc/passwd查看用户相应的启动shell,对比其他正常的用户的启动shell,如果不一样则修改成相同即可。。

例如其他正常用户的shell为/bin/bash,异常用户对应的shell是/bin/sh,则将其改为/bin/bash。

Linux.bashrc.bash_profile和.profile之间的区别

bashshell使用一些启动文件去设置环境变量,这些启动文件为shell本身和系统用户确定某些bashshell配置,在本文中,我们将了解.bashrc.bash-profile和.profile之间的区别。

  • Bash在交互式shell中提供了两种模式选项,登录和非登录(loginandnon-login)。

  • 当我们使用ssh登录到系统时,我们得到一个交互式登录的shell(interactiveloginshell),这个shell在被调用时会读取启动文件。

  • 当我们在一个已经登录的shell上调用一个新的shell时,我们得到的是一个交互式的、非登录的shell。这个shell只执行.bashrc文件

  • 当shell不需要任何人类干预即可执行命令时,我们将其称为非交互式shell(non-interactiveshell)。例如,当脚本生成子shell来执行命令时,子shell是非交互式shell,子shell不会执行任何启动文件,它从创建它的shell中继承了环境变量。

    启动文件包含shell启动时需要执行的命令。因此,shell会自动执行这些启动文件中的命令来设置shell。这个过程发生在显示命令提示符之前。

    3.1.bash_profile的意义

    .bash_profile文件包含用于设置环境变量的命令,因此shell将继承这些变量。

    在交互式登录shell中,bash首先查找/etc/profile文件。如果找到,bash将在当前shell中读取并执行它。结果是/etc/profile为所有用户设置环境配置

    类似地,bash然后检查主目录(cd~进入的目录为主目录)中是否存在.bash_profile。如果存在,则bash在当前shell中执行.bash_profile,Bash然后停止寻找其他文件,如.bash_login和.profile。

    如果bash没有找到.bash_profile,那么它将按照顺序查找.bash_login和.profile,并只执行第一个可读的文件。

    让我们研究一个示例.bash_profile文件。这里我们重新设置并导出PATH变量

    echo"Bash_profileexecutionstarts.."

    echo"Bash_profileexecutionstops.."

    在交互式登录shell的命令提示符之前,我们将看到下面的输出

    linux用户sourcebashrc或,linuxsourceprofile

    Bash_profileexecutionstops..

    [example@example~]$

    3.2.bashrc的意义

    .bashrc包含特定于bashshell的命令。每个交互式非登录shell首先读取.bashrc,通常,.bashrc是添加别名和bash相关功能的最佳场所。

    bashshell在主目录中查找.bashrc文件,并使用source在当前shell中执行它。

    让我们通过样例认识.bashrc文件

    echo"Bashrcexecutionstarts.."

    echo"Bashrcexecutionstops.."

    在交互式非登录shell的命令提示符之前,我们将看到下面的输出

    [example@example~]$

    3.2.profile的意义

    在交互式shell登录过程中,如果在主目录中不存在.bash_profile,则bash寻找.bash_login,如果发现**.bash_login**则bash执行它。如果.bash_login不存在主目录中,则bash寻找.profile并执行它。

    .profile可以保持与.bash_profile或.bash_login的配置。它控制着出现的提示,键盘声音,要打开的shell以及覆盖/etc/profile文件中设置的变量的单个配置文件设置。

    在每次交互登录时,bashshell都会执行.bash_profile。如果在主目录中找不到.bash_profile,bash将执行从.bash_login和.profile中找到的第一个可读文件。在每次交互式非登录shell启动时,bash都会.bashrc。

    通常情况下,环境变量会被放入.bash_profile。由于交互式登录shell是第一个shell,因此环境设置所需的所有默认设置都被放入**.bash_profile**。因此,它们只设置一次而且在所有子shell中继承。

    同样地,别名和函数也会被放入.bashrc确保每次从现有环境中启动shell时都加载这些

    为了避免登录和非登录交互shell设置的差异。.bash_profile调用.bashrc。因此,我们将看到下面的代码片段被插入**.bash_profile**,以便在每个交互式登录shell上.bashrc也在同样shell执行:

    PATH=$PATH:$HOME/binexportPATH

    注意:

    总而言之,在使用环境之前,shell需要其启动文件以配置shell环境。

    在本文中,我们检查了各种shell模式。然后,我们了解了各种bash启动文件的重要性。我们检查了这些启动文件之间的差异。

    以上就是linux用户source?.bashrc或.profile找不到文件怎么解决的详细内容,更多请关注主机测评网其它相关文章!

    标签:
    怎么使用nginx模拟进行金丝雀发布
    « 上一篇
    返回列表
    下一篇 »

    如本文对您有帮助,就请抽根烟吧!