我想创建一个执行以下操作的bash别名:
su
给其他用户cd
到某个目录source
另一个脚本(特别是python virtualenv
激活脚本)运行别名后,我希望以激活virtualenv的目录中的用户身份登录。我可以让一切工作除了su
,它似乎生活在它自己的平行宇宙中。
我看不到让cd
和source
在su
环境中运行的方法,并让我能够继续在su
环境中工作。 (例如su -c
只运行操作并离开我开始的地方。)
更新
为了澄清一点,我想要这样的事情:
sudo -u www-data bash -c 'cd /var/www; pwd; whoami'
但我想留在交互式子shell中,直到我^D
出来。
答案 0 :(得分:2)
如果您不关心~/.bashrc
,则可以直接找到您的文件:
su -c 'bash --rcfile myfile'
如果你关心并且你的文件只导出变量(即没有定义别名或完成):
su -c 'source myfile; bash'
如果您确实需要~/.bashrc
,并且需要定义别名和完成,则可以使用以下内容来源:
su -s /bin/bash -c 'bash --rcfile <(echo "source ~/.bashrc; source myfile")'