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的命令提示符之前,我们将看到下面的输出

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找不到文件怎么解决的详细内容,更多请关注主机测评网其它相关文章!
本文来源:国外服务器--linux用户sourcebashrc或(linuxsourceprofile)
本文地址:https://www.idcbaba.com/guowai/2712.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。



