首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Shell编程中,当登录服务器时显示“-bash-4.2$”怎么办?

Shell编程中,当登录服务器时显示“-bash-4.2$”怎么办?

原创
作者头像
哎呀_编号89757
发布2024-11-18 10:05:19
发布2024-11-18 10:05:19
4660
举报

在文章开始之前,先推荐一篇大数据的文章 标题:《在hue上部署spark作业》, 链接:https://cloud.tencent.com/developer/article/2466077 这篇文章详细介绍了如何在hue上部署spark作业的步骤,对于初学者是一种很好的参考

背景

某一天登录远程服务器时,突然没有了如下的登录成功的页面:

而是显示如下:

代码语言:shell
复制
Last login: Fri Nov 15 09:28:52 2024 from 222.71.10.10
-bash-4.2$ 
...
原因查找

这种情况下,能猜得到是因为用户没有通过鉴权登录的原因,我们通过主账号ls -a来查看其主页下的文件,看看是否是因为鉴权的文件丢失的原因。而ls -a是要list所有文件,包括隐藏的文件。

代码语言:shell
复制
ls -a

发现.bashrc.bash_profile文件确实丢失了,这里再来复习下这两个文件的用途:

  • 一个登录 shell 会话首先读取 /etc/profile 配置文件,然后在当前登录的用户家目录依次查找读取 ~/.bash_profile~/.bash_login~/.profile

登录 shell 对用户进行身份验证开始,如果登录到终端会话或通过 SSH 和身份验证,那么 shell 会话将被设置为登录 shell

  • 一个非登录 shell 会话首先读取 /etc/bash.bashrc 配置文件,然后在当前登录的用户家目录查找读取 ~/.bashrc

如果在经过身份验证的会话中启动一个新的 shell 会话,就像从终端调用bash命令所做的那样,则会启动一个非登录的 shell 会话。在启动子 shell 时,不会要求提供身份验证详细信息

因此,如果如果主页下的上述文件被删除了,相当于shell登录时在读取配置文件的时候无法进行用户的鉴定,因为就无法显示正常登录的用户的信息。但是linux系统在建立的时候可能也怕我这样的初学者,对于系统的关键文件进行了备份,我们只需要将文件从备份的地方cp过来即可。

解决方案

备份的文件在目录/etc/skel/下,那么我们只需要将其目录下的鉴权文件复制到主页下即可,脚本如下:

代码语言:shell
复制
-bash-4.2$ cp /etc/skel/.bash* ~

我们将目录下/etc/skel/下的bash开头的文件复制到账号的主页下,登出系统,再登录,我们就会发现:

代码语言:shell
复制
[songj@instance-jgzzg4xl ~]$ 

页面显示了正常,我们又重新登录了系统。所以,报错有的时候并不复杂,复杂的是基础知识是否掌握,见到的报错是否多样,如果答案是”是“的话,那么深化下去将会变得容易。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 原因查找
  • 解决方案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档