解决linux命令行为什么变成-bash-3.2$:

简介:

今天在安装部署linux下的Oracle环境时,发现了一个命令行突变的问题,其实早在之前使用linux操作的时候也曾碰到过,但是一直都没有理会,而且咨询过相关专业的linux开发人员,也说没什么问题,所以就一直没有去寻找原因。这次因为部署Oracle环境,在linux下部署了几次,都是因为环境配置没有ok,导致我重复了几次,虽然配置失败了几次,但是我想这个过程还是很享受,毕竟遇到问题不是什么坏事,就如同我们平时工作中一样,如果总是一帆风顺,我们的水平永远就这样,所以得出的总结是要想不断提高自己,就需要通过发现和解决问题的过程来学习,最后你会发现你就水涨船高了,呵呵。

  下面看看这个linux下命令行为什么会变成-bash-3.2$:,先根据oracle的基本安装步骤来,如下命令:

[root@localhost ~]# groupadd oinstall
[root@localhost ~]# groupadd dba
[root@localhost ~]# cd /
[root@localhost /]# mkdir -p /u01/oracle
[root@localhost /]# useradd -g oinstall -G dba -d /u01/oracle oracle

[root@localhost ~]# passwd oracle
Changing password for user oracle.
New UNIX password: 
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.
[root@localhost ~]# su - oracle
-bash-3.2$ :

这个时候我发现在oracle切换用户之后就出现了-bash-3.2$ :,这表明什么呢,也就是说缺少bash的环境配置,这里需要注意的是当我在创建oracle用户时,是改变了oracle的默认指定目录,useradd -g oinstall -G dba -d /u01/oracle oracle,也就是说如果没有改变这个目录的话,通常情况下,新增用户默认指定目录应该是/home/oracle/,在看看默认目录下有哪些文件,我们来看看root,如下所示:

[root@localhost ~]# ll -a
total 2562348
drwxr-x--- 14 root root       4096 Feb 15 18:06 .
drwxr-xr-x 24 root root       4096 Feb 15 21:28 ..
-rw-------  1 root root       1224 Feb 15 21:26 .bash_history
-rw-r--r--  1 root root         24 Jan  6  2007 .bash_logout
-rw-r--r--  1 root root        191 Jan  6  2007 .bash_profile
-rw-r--r--  1 root root        176 Jan  6  2007 .bashrc
-rw-r--r--  1 root root        100 Jan  6  2007 .cshrc

再来看oracle更改后的默认目录下,如下所示:

[root@localhost ~]# su - oracle
[oracle@localhost ~]$ ls -a
此时该目录下为空,那么问题就找到了,就是缺少用户环境配置文件,,那么为什么需要这样文件,这就是跟linux的机制有关联了,因为在linux下每次通过useradd创建新的用户时,都会将所有的配置文件从/etc/skel复制到新用户的主目录下,一般默认在home下面的新用户主目录,而关于/etc/skel这个目录,是主要被useradd所用到。

  通过如上的解析,我们不难发现要解决命令在用户切换之后为什么会变成bash格式,就需要将 /etc/skel的用户环境配置文件复制到指定的默认目录下即可,如下所示:

[root@localhost ~]# su - oracle
[oracle@localhost ~]$ ls -a
.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc
[oracle@localhost ~]$ 
此时的命令行就正常了。

 









本文转自一米一阳光博客园博客,原文链接: http://www.cnblogs.com/candle806/archive/2011/02/16/1956050.html   ,如需转载请自行联系原作者



相关文章
|
6天前
|
Linux Shell 开发工具
|
1天前
|
Linux
|
6天前
|
网络协议 安全 Linux
|
3天前
|
存储 运维 Linux
|
3天前
|
存储 JSON Linux
|
5天前
|
存储 安全 Ubuntu
Linux dump命令教程
绍了Linuxdump命令的功能,包括用于备份整个文件系统的全备份和增量备份,以及如何在不同Linux发行版中安装和使用dump命令。
43 16
|
8天前
|
Ubuntu Linux 测试技术
Linux系统之在命令行玩转Pacman4console贪吃人经典小游戏
【7月更文挑战第12天】Linux系统之在命令行玩转Pacman4console贪吃人经典小游戏
32 11
|
9天前
|
存储 安全 Linux
Linux命令sync详解
`sync`命令在Linux中用于将内存缓冲区的数据强制写入磁盘,保证数据持久性和一致性。它在关机、重启或重要文件操作前后使用,以防数据丢失。工作原理是强制将内存中的数据同步到磁盘,特点是阻塞式执行且通常无需参数。常见用法包括安全关机、数据备份和配置文件修改后确保更改生效。应注意,过度使用可能影响性能,应适时使用`fsck`检查文件系统一致性。
|
9天前
|
安全 数据管理 Shell
Linux命令su详解
`su`命令在Linux中用于切换用户身份,常用于权限管理。它允许用户无须注销当前会话就切换到另一个用户,尤其是root。`su`有多种选项,如`-`或`--login`加载目标用户环境,`-c`执行指定命令后返回。使用时需注意权限安全,建议用`sudo`以减少风险。通过限制`/etc/pam.d/su`可加强访问控制。`su`在系统维护和数据管理中扮演角色,但不直接处理数据。
|
9天前
|
关系型数据库 MySQL Linux
Linux命令systemctl详解
`systemctl`是Linux系统用于管理systemd服务的核心命令,它与systemd守护进程交互,实现启动、停止、重启服务及查看服务状态等功能。主要参数包括`start`、`stop`、`restart`、`status`、`enable`和`disable`等。例如,启动Apache服务使用`systemctl start httpd.service`,查看服务状态用`systemctl status <service>`。使用时需注意权限,服务名通常以`.service`结尾,但命令中可省略。最佳实践包括利用tab键补全、定期查看服务状态和合理配置服务自启。