【问题标题】:Creating a bash alias to su to a new user and source a script为新用户创建 bash 别名并获取脚本
【发布时间】:2014-05-29 18:33:35
【问题描述】:

我想创建一个执行以下操作的 bash 别名:

  • su 给另一个用户
  • cd到某个目录
  • source 另一个脚本(特别是 python virtualenv 激活脚本)

运行别名后,我想在目录中以用户身份登录,并激活 virtualenv。除了su,我可以让一切正常工作,它似乎生活在自己的平行宇宙中。

我看不到让cdsourcesu 环境中运行并坚持下去的方法,让我能够继续在su 环境中工作。 (例如,su -c 只是运行操作并将我留在我开始的地方。)

更新:

为了澄清一点,我想要这样的东西:

sudo -u www-data bash -c 'cd /var/www; pwd; whoami'

但我想留在交互式子 shell 中,直到我 ^D 退出。

【问题讨论】:

    标签: bash su


    【解决方案1】:

    如果您不关心您的~/.bashrc,您可以直接获取您的文件而不是那个:

    su -c 'bash --rcfile myfile' 
    

    如果你关心并且你的文件只导出变量(即不定义别名或完成):

    su -c 'source myfile; bash'
    

    如果您确实需要您的 ~/.bashrc 并且需要定义别名和补全,您可以通过以下方式获取两者:

    su -s /bin/bash -c 'bash --rcfile <(echo "source ~/.bashrc; source myfile")'
    

    【讨论】:

    • 我当地的 bash 大师同时提出了相同的答案,但你打败了他。 :) 谢谢。
    猜你喜欢
    • 2020-04-03
    • 2014-09-24
    • 2022-07-22
    • 1970-01-01
    • 1970-01-01
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多