LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 973|回复: 8

新手提问,关于su(已解决)

[复制链接]
发表于 2007-4-10 19:16:29 | 显示全部楼层 |阅读模式
我是看着6.2的中文版教材在一步一步编译LFS
走到了4.3节。文中要求执行
su - lfs来用lfs用户登陆。可是我执行以后还是处于执行这个指令的那个用户状态下。
而我用
su lfs命令却可以正常切换到lfs用户。

这是为什么?我哪里做得不对?
发表于 2007-4-10 19:33:29 | 显示全部楼层
su 跟 su - 的区别在於登陆的 shell

su 是 non-login shell
su - 是 login shell

相信身分已经是转了,只是当前的环境及变量未改,用 whoami 看看自己是谁
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-10 20:13:41 | 显示全部楼层
Post by d00m3d
su 跟 su - 的区别在於登陆的 shell

su 是 non-login shell
su - 是 login shell

相信身分已经是转了,只是当前的环境及变量未改,用 whoami 看看自己是谁


我用了whoami命令看过才发上面的帖的。

下面是我从终端里复制出来的:

zhfg@zhfg:~$ su - lfs
Password:
HOME=/home/lfs
TERM=xterm
PS1=\u:\w\$/bin/bash
zhfg@zhfg:~$ whoami
zhfg
zhfg@zhfg:~$ su lfs
Password:
lfs@zhfg:/home/zhfg$ whoami
bash: whoami: command not found
lfs@zhfg:/home/zhfg$
lfs@zhfg:/home/zhfg$
回复 支持 反对

使用道具 举报

发表于 2007-4-10 20:20:02 | 显示全部楼层
从上面来看,已经从zhfg用户进入了lfs用户,系统的hostname是zhfg
whoami命令在你系统上没有
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-10 20:29:59 | 显示全部楼层
楼上的没看清楚。
我执行了两次su的。
第一次用的是“su - lfs”
接下来执行“whoami”的时候回显的是"zhfg"
这说明我的系统里是有whoami的
第二我是执行“su lfs”的
这个时候再执行"whoami",系统提示没有命令
那是因为.bashrc文件里定义的PATH变量的原因造成的

这也证明我在一楼里写的:
su - lfs和su lfs的结果不一样.

下面附上终端显示和.bashrc文件:

zhfg@zhfg:~$ su - lfs
Password:
HOME=/home/lfs
TERM=xterm
PS1=\u:\w\$/bin/bash
zhfg@zhfg:~$ whoami
zhfg
zhfg@zhfg:~$ su lfs
Password:
lfs@zhfg:/home/zhfg$ whoami
bash: whoami: command not found
lfs@zhfg:/home/zhfg$
lfs@zhfg:/home/zhfg$



/home/lfs/.bashrc

lfs@zhfg:/mnt/lfs/sources/binutils-build$ more /home/lfs/.bashrc
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
PATH=/tools/bin:/bin:usr/bin
export LFS LC_ALL PATH
回复 支持 反对

使用道具 举报

发表于 2007-4-10 20:51:28 | 显示全部楼层
刚才的确没有看清楚,不好意思

有这样几个问题:
1. bashrc 中 PATH 的 usr/bin前漏了/
2. su - lfs 后为何会显示bash_profile的内容?把.bash_profile的内容也列出看一下
3. su - lfs是模拟用户登录环境, su lfs是登录用户环境, 如果模拟的过程中有问题,就回到原先的用户,所以判断是执行登录环境中出现了问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-10 21:00:09 | 显示全部楼层
以下是.bash_profile的内容

lfs@zhfg:/mnt/lfs/sources/binutils-build$ more /home/lfs/.bash_profile
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$'/bin/bash



hans_yu大哥说的“所以判断是执行登录环境中出现了问题”
是什么意思。我要怎么样去判断是不是。如果是要怎么样解决?

谢谢大哥指出我上面的错误,我现在就改。
回复 支持 反对

使用道具 举报

发表于 2007-4-10 21:07:28 | 显示全部楼层
在PS1='\u:\w\$' 和 /bin/bash 之间应该有个空格
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-10 21:11:49 | 显示全部楼层
好了。我的.bash_profile文件有问题。少了两个空格。改过来就好了。谢谢hans_yu 和d00m3d两位大人了

linux下的空格看不太清楚哟,
我是新手,不好意思。这么简单的问题还来烦大家
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表