OS X ML (10.8) Terminal 下 su 之后 .bash_profile 设置无效

2012-11-08 20:57:46 +08:00
 ch4ng13
如题。请问各位这个问题要如何解决?

我现在是每次 su 之后手动执行一下 source ~/.bash_profile 太烦了。
7883 次点击
所在节点    macOS
16 条回复
alexrezit
2012-11-08 21:10:43 +08:00
在 etc 里面设置 global 的.
killpanda
2012-11-08 21:11:18 +08:00
开启启动然后登录到 root 用户下,设置一下配置文件?
ch4ng13
2012-11-08 21:19:36 +08:00
@alexrezit 可否说详细一些?

@killpanda 我先试试在 CLI 下能否解决这个问题。
gavingeng
2012-11-08 22:41:07 +08:00
su到root用户的shell是/bin/sh,通过chsh来修改shell

Login: root
Uid [#]: 0
Gid [# or name]: 0
Generated uid:
Home directory: /var/root
Shell: /bin/bash
Full Name: System Administrator
Office Location:
Office Phone:
Home Phone:

修改/etc/passwd root的shell为/bin/bash
ch4ng13
2012-11-08 23:10:44 +08:00
@gavingeng 之前注意到了这个区别。按你说的用

# chsh -s /bin/bash

改掉了 root 默认的 shell,但问题仍没有解决。我比较了 osx 与 debian su 之后 export 出来的环境变量的区别:在 osx 上 su 之后 $USER 仍为之前的用户帐号;而在 debian 上 su 之后,UID 直接就变成 0 了。

根据 su man page (osx) 上所说,su 之后 UID 能不能切为 0 (root),关键看当前的用户是否在 admin 或 wheel 组里。而我的当前的帐号确定已经在 admin 组里了。

所以我之前考虑的方向一直是 /etc/pam.d/su 里动作。(可能钻到牛角尖里去了)
ch4ng13
2012-11-08 23:44:09 +08:00
这个问题有些诡异啊。

1 在上一帖中说到,将 root 的 SHELL 改成 bash 了。。。。然后又试着将 .bash_profile 改名为 .bashrc,现在的自定义设置全部生效了。

2 我用 ch4ng13 这个帐号开机登录系统,打开 Terminal.app ,默认的 SHELL 是 bash,这时所有的自定义设置放在 .bashrc 这个文件里无效,只有放在 .bash_profile 才有效。

3 在 (1) 成功后,我又将 (2) 的 .bash_profile 也改成 .bashrc,这时的自定义设置一如之前,还是无效的。

4 这太让人纠结了 ???
alexrezit
2012-11-08 23:49:37 +08:00
@ch4ng13 .bash_profile 和 .bashrc 的作用是不同的, 建议搜索一下相关资料.
sinxccc
2012-11-08 23:54:14 +08:00
Try 'su -'
cabbala
2012-11-09 00:01:03 +08:00
@ch4ng13 osx 下bash的行为和Linux下不太一样的,一般linux都是去写.bashrc,但是osx下要去写.bash_profile
sinxccc
2012-11-09 00:24:05 +08:00
@cabbala 这是 login shell 和 普通 shell 的差别,什么系统都一样。Linux 下只要写 .bashrc 是因为它在默认的 profile 文件里引用 bashrc 了
ch4ng13
2012-11-09 00:31:45 +08:00
@sinxccc 这个命令好用。进去后 $USER 直接就是 root;.bash_profile 也有动作了(.bashrc 又不行了,据说这在 BSD-like OS 才是正常的)。

一并谢过参与讨论各位!
ch4ng13
2012-11-09 00:37:56 +08:00
是的,~/.bashrc, ~/.bash_profile 默认行为的差异,与 /etc/bashrc, /etc/profile, ... 等直接相关,不过这里面的坑好多,现在暂时没空去细究。
haha1903
2012-11-09 07:51:38 +08:00
su -, su - user 就可以了
muxi
2012-11-09 09:55:34 +08:00
sudo -i
hewigovens
2012-11-09 10:44:47 +08:00
我一般是在/etc/bashrc里添加一条:source ~/.bashrc
graypants
2013-07-05 19:25:11 +08:00
我也碰到类似问题,google到此处,并没能解决问题,最后发现root账户在~/.profile中设置别名就ok了...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/52129

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX