![]() | 1 alexrezit 2012-11-08 21:10:43 +08:00 在 etc 里面设置 global 的. |
![]() | 2 killpanda 2012-11-08 21:11:18 +08:00 开启启动然后登录到 root 用户下,设置一下配置文件? |
![]() | 4 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 |
![]() | 5 ch4ng13 OP @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 里动作。(可能钻到牛角尖里去了) |
![]() | 6 ch4ng13 OP 这个问题有些诡异啊。 1 在上一帖中说到,将 root 的 SHELL 改成 bash 了。。。。然后又试着将 .bash_profile 改名为 .bashrc,现在的自定义设置全部生效了。 2 我用 ch4ng13 这个帐号开机登录系统,打开 Terminal.app ,默认的 SHELL 是 bash,这时所有的自定义设置放在 .bashrc 这个文件里无效,只有放在 .bash_profile 才有效。 3 在 (1) 成功后,我又将 (2) 的 .bash_profile 也改成 .bashrc,这时的自定义设置一如之前,还是无效的。 4 这太让人纠结了 ??? |
![]() | 8 sinxccc 2012-11-08 23:54:14 +08:00 Try 'su -' |
![]() | 9 cabbala 2012-11-09 00:01:03 +08:00 @ch4ng13 osx 下bash的行为和Linux下不太一样的,一般linux都是去写.bashrc,但是osx下要去写.bash_profile |
![]() | 10 sinxccc 2012-11-09 00:24:05 +08:00 @cabbala 这是 login shell 和 普通 shell 的差别,什么系统都一样。Linux 下只要写 .bashrc 是因为它在默认的 profile 文件里引用 bashrc 了 |
![]() | 11 ch4ng13 OP @sinxccc 这个命令好用。进去后 $USER 直接就是 root;.bash_profile 也有动作了(.bashrc 又不行了,据说这在 BSD-like OS 才是正常的)。 一并谢过参与讨论各位! |
![]() | 12 ch4ng13 OP 是的,~/.bashrc, ~/.bash_profile 默认行为的差异,与 /etc/bashrc, /etc/profile, ... 等直接相关,不过这里面的坑好多,现在暂时没空去细究。 |
![]() | 13 haha1903 2012-11-09 07:51:38 +08:00 su -, su - user 就可以了 |
![]() | 14 muxi 2012-11-09 09:55:34 +08:00 sudo -i |
![]() | 15 hewigovens 2012-11-09 10:44:47 +08:00 我一般是在/etc/bashrc里添加一条:source ~/.bashrc |
16 graypants 2013-07-05 19:25:11 +08:00 我也碰到类似问题,google到此处,并没能解决问题,最后发现root账户在~/.profile中设置别名就ok了... |