OS X ML (10.8) Terminal 下 su 之后 .bash_profile 设置无效 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ch4ng13
V2EX    macOS

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

  •  
  •   ch4ng13 2012-11-08 20:57:46 +08:00 8276 次点击
    这是一个创建于 4727 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题。请问各位这个问题要如何解决?

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

    @killpanda 我先试试在 CLI 下能否解决这个问题。
    gavingeng
        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
    ch4ng13
        5
    ch4ng13  
    OP
       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
        6
    ch4ng13  
    OP
       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
        7
    alexrezit  
       2012-11-08 23:49:37 +08:00
    @ch4ng13 .bash_profile 和 .bashrc 的作用是不同的, 建议搜索一下相关资料.
    sinxccc
        8
    sinxccc  
       2012-11-08 23:54:14 +08:00
    Try 'su -'
    cabbala
        9
    cabbala  
       2012-11-09 00:01:03 +08:00
    @ch4ng13 osx 下bash的行为和Linux下不太一样的,一般linux都是去写.bashrc,但是osx下要去写.bash_profile
    sinxccc
        10
    sinxccc  
       2012-11-09 00:24:05 +08:00
    @cabbala 这是 login shell 和 普通 shell 的差别,什么系统都一样。Linux 下只要写 .bashrc 是因为它在默认的 profile 文件里引用 bashrc 了
    ch4ng13
        11
    ch4ng13  
    OP
       2012-11-09 00:31:45 +08:00
    @sinxccc 这个命令好用。进去后 $USER 直接就是 root;.bash_profile 也有动作了(.bashrc 又不行了,据说这在 BSD-like OS 才是正常的)。

    一并谢过参与讨论各位!
    ch4ng13
        12
    ch4ng13  
    OP
       2012-11-09 00:37:56 +08:00
    是的,~/.bashrc, ~/.bash_profile 默认行为的差异,与 /etc/bashrc, /etc/profile, ... 等直接相关,不过这里面的坑好多,现在暂时没空去细究。
    haha1903
        13
    haha1903  
       2012-11-09 07:51:38 +08:00
    su -, su - user 就可以了
    muxi
        14
    muxi  
       2012-11-09 09:55:34 +08:00
    sudo -i
    hewigovens
        15
    hewigovens  
       2012-11-09 10:44:47 +08:00
    我一般是在/etc/bashrc里添加一条:source ~/.bashrc
    graypants
        16
    graypants  
       2013-07-05 19:25:11 +08:00
    我也碰到类似问题,google到此处,并没能解决问题,最后发现root账户在~/.profile中设置别名就ok了...
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2644 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 14:42 PVG 22:42 LAX 07:42 JFK 10:42
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86