0

0

linux用户source .bashrc或.profile找不到文件怎么解决

PHPz

PHPz

发布时间:2023-05-13 21:37:19

|

6227人浏览过

|

来源于亿速云

转载

    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之间的区别

    1 概述

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

    2 交互式和非交互式shell

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

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

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

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

    3 bash启动文件

    启动文件包含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_profile execution starts.."  
    PATH=$PATH:$HOME/bin; 
    export PATH; 
    echo "Bash_profile execution stops.."

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

    Bash_profile execution starts.. 
    Bash_profile execution stops.. 
    [example@example ~]$

    3.2 .bashrc 的意义

    FashionLabs
    FashionLabs

    AI服装模特、商品图,可商用,低价提升销量神器

    下载

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

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

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

    echo "Bashrc execution starts.." 
    alias elui='top -c -u $USER' 
    alias ll='ls -lrt' 
    echo "Bashrc execution stops.."

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

    [example@example ~]$ bash
    Bashrc execution starts.. 
    Bashrc execution stops.. 
    [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文件中设置的变量的单个配置文件设置。

    4 区别

    在每次交互登录时,bash shell都会执行 .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执行:

    if [ -f ~/.bashrc ];
    then 
        .  ~/.bashrc; 
    fi 
    PATH=$PATH:$HOME/bin export PATH

    注意:

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

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

    相关专题

    更多
    磁盘配额是什么
    磁盘配额是什么

    磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

    1347

    2023.06.21

    如何安装LINUX
    如何安装LINUX

    本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

    700

    2023.06.29

    linux find
    linux find

    find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

    294

    2023.06.30

    linux修改文件名
    linux修改文件名

    本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

    776

    2023.07.05

    linux系统安装教程
    linux系统安装教程

    linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

    571

    2023.07.06

    linux查看文件夹大小
    linux查看文件夹大小

    Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

    545

    2023.07.20

    linux查看ip命令
    linux查看ip命令

    本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

    297

    2023.07.20

    linux查看cpu使用率
    linux查看cpu使用率

    在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

    377

    2023.07.25

    c++主流开发框架汇总
    c++主流开发框架汇总

    本专题整合了c++开发框架推荐,阅读专题下面的文章了解更多详细内容。

    3

    2026.01.09

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    PostgreSQL 教程
    PostgreSQL 教程

    共48课时 | 6.8万人学习

    Git 教程
    Git 教程

    共21课时 | 2.5万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号