Linux中切换用户变成-bash4.1-$的解决方法【转】

转自

Linux中切换用户变成-bash4.1-$的解决方法 - xia_xia的博客 - 博客频道 - CSDN.NET
http://blog.csdn.net/xia_xia0919/article/details/50588985

在linux中切换用户时变成-bash4.1-$,发现有两个情况可能会出现这种现象。

场景一:1、在根目录下创建目录dir

2、useradd -d /dir tom 创建用户tom,指定其家目录为/dir,而不是其默认家目录下(/home/tom)

3、su - tom 切换到tom用户,出现-bash-4.1$

原因分析:如果我们没有改变用户的家目录的话,通常情况下,新增用户指定目录应该是/home,先来看一下用户jinjin默认家目录下有哪些文件

再来看一下tom用户家目录下有什么?

发现在tom的家目录下是空的,缺少用户登入需要的环境配置文件.bash_profile .bashrc等,那么为什么需要这样文件,这就是跟linux的机制有关联了,因为在linux下每次通过useradd创建新的用户时,都会将所有的配置文件从/etc/skel复制到新用户的主目录下,一般默认在home下面的新用户主目录,而关于/etc/skel这个目录,是主要被useradd所用到。而在我们创建tom用户时,系统也出现过提示,没有将/etc/skel的文件复制到该目录。

解决办法:通过如上的解析,我们不难发现要解决命令在用户切换之后为什么会变成bash格式,就需要将 /etc/skel的用户环境配置文件复制到指定的默认目录下即可(此处注意/etc/skel/.后面的点不要漏了,因为那几个文件都是隐藏文件,不加点无法对隐藏文件进行复制),这样在切到tom用户就没有出现-bash-4,1$了

现在再看看tom的家目录下就有了那些环境配置文件了

场景二:1、创建用户sara,家目录为默认家目录 /home/sara

2、使用usermod -d /tmp/sara  sara 更改用户sara的家目录

3、su - sara 出现-bash4.1-$

vim /etc/passwd查看到sara的家目录已经到 /tmp/sara中了

原因分析:此时查看sara的家目录确实已经在/tmp/sara中,但是发现sara文件夹仍在/home下而不在/tmp下,那用户在登入时即无法在其家目录下读取到配置文件。

这是为什么呢?查看usermod的参数,发现-m -d需要一起使用才能把已存在的sara文件夹移到新目录中去。

解决办法:在改变用户家目录时 usermod带上参数-d -m

目前大家遇到比较多的是第二种情况,可以试试~~

时间: 2024-10-18 16:53:41

Linux中切换用户变成-bash4.1-$的解决方法【转】的相关文章

linux使用su切换用户提示 Authentication failure的解决方法& 复制文件时,报cp: omitting directory `XXX'

linux使用su切换用户提示 Authentication failure的解决方法:这个问题产生的原因是由于ubtun系统默认是没有激活root用户的,需要我们手工进行操作,在命令行界面下,或者在终端中输入如下命令: sudo passwd Password:你当前的密码 Enter new UNIX password:这个是root的密码Retype new UNIX password:重复root的密码然后会提示成功的信息. 在说明一点,使用su和sudo是有区别的,使用su切换用户需要

linux使用su切换用户提示 Authentication failure的解决方法

刚刚安装的虚拟机,使用的ubtun系统,进如操作系统后,简单地尝试了一下,发现无法使用shutdown命令进行关机,并且无法进行su命令,提示 Authentication failure 这个问题产生的原因是由于ubtun系统默认是没有激活root用户的,需要我们手工进行操作,在命令行界面下,或者在终端中输入如下命令: sudo passwd Password:你当前的密码 Enter new UNIX password:这个是root的密码 Retype new UNIX password:

linux 下普通用户无法使用sudo命令的解决方法

装完linux系统,发现普通用户无法使用sudo 命令, 提示:xinhuan(普通用户)is not in the sudoers file, This incident will be reported. 大概意思是说xinhuan 这个用户不在sudoers这个文件里,这个事件将要被报告的. 我们可以这样做 [[email protected]~]$su -    (切换到root) 输入超级用户root密码 [[email protected]~]#chmod u+w /etc/sudo

Linux中“is not in the sudoers file”解决方法

解决方案:首需要切换到root身份 $su -(注意有- ,这和su是不同的,在用命令"su"的时候只是切换到root,但没有把root的环境变量传过去,还是当前用户的环境变量,用"su -"命令将环境变量也一起带过去,就象和root登录一样) 然后$visudo     //切记,此处没有vi和sudo之间没有空格 1.移动光标,到最后一行2.按a,进入append模式3.输入your_user_name ALL=(ALL)  ALL4.按Esc5.输入“:w”(

Linux中tree无法正常显示中文的解决方法

tree命令以树状图列出目录的内容. 命令 tree -L n 的时候往往是无法正常显示中文的 先开始我以为是tree命令对中文是不支持的,后来百度了一下,网上有几个解决办法 安装新的tree可以解决的这个问题 后来测试了一下,发现好像没什么效果 使用tree的-N选项可以正常显示文件 在tree众多的参数里面有个 -N 在你原有命令的基础上面加上它就可以正常显示你的文件了 原文地址:https://www.cnblogs.com/7haoyu/p/11251941.html

Linux中添加用户、删除用户时新手可能遇到的问题

Linux中添加用户.删除用户时新手可能遇到的问题  1.创建新用户后切换到新用户:No directory, logging in with HOME=/     添加用户     #sudo useradd -m -s /bin/bash -g group loginname     -m 创建home目录 (不加这个要手动添加目录,不然会出现No directory,Logging in with HOME=/ )     -s /bin/bash 使用bash( 默认为 /bin/sh

Linux中root用户找不到JAVA_HOME

Linux中root用户找不到JAVA_HOME 在Ubuntu环境中安装好Java环境后设置环境变量:在/etc/profile中设置好了JAVA_HOME变量并引入到PATH中,用于Ubuntu默认是不以root用户登录的,这时echo $PATH可以看到JAVA_HOME已经被设置好了,java命令也可以执行.接下来su root,再输入java命令提示找不到java命令,$PATH中也找不到JAVA_HOME这个路径了.查了很久的资料也没有找到原因,后来偶然切换用户的时候用了su - r

Linux-(10)Linux中的用户和组

和Windows一样,当我们使用Linux时,也需要以一个用户的身份登录,一个进程也需要以一个用户的身份运行,用户限制使用者或进程可以使用,不可以使用哪些资源. 在我们使用Linux时,都是用一个用户名来进入系统的,而实际上在Linux中,每一个用户都拥有一个UserID,操作系统实际使用的是用户的ID来区分用户,而不是我们登录系统用的用户名. 在Linux中,每个用户都属于一个主组,属于一个或多个附属组.主组默认是和用户名相同的,也就是说创建用户的时候会默认创建一个同名的组. 同用户一样,每个

Linux中的用户和组

Linux中,用户可大致分为两类:管理员 和 普通用户. 普通用户又可以细分为 系统用户 和 登录用户. 我们知道Linux中默认的管理员用户名叫 root,那么操作系统是怎样识别一个用户是 管理员用户 还是 普通用户呢,是跟我们想象的一样,通过用户名去识别吗?并不是,操作系统是通过UID去识别用户是否为管理员的,这里说到的UID是一个数字,它标识了用户的身份,管理员用户的uid为0,所以操作系统判断一个用户是否为管理员,就是去判断这个用户的UID是否为0,跟用户名没有任何关系. 管理员的UID