我想知道当您使用 sudo 切换到 root 配置文件时是否有办法注入别名。
我的想法是这样的:
sshLogin@linuxVM /home/sshLoginUser/> sudo su -x "alias goHome='cd /home/sshLoginUser/'"
root@linuxVM /home/OtherDir/> goHome
root@linuxVM /home/sshLoginUser/>
我正在使用云上的 VM 盒来设置和运行一些操作,并且最终想为重复任务添加更多别名。
理想情况下,我希望sudo su
在source
一个文件中包含我的别名和函数集合。
答案1
重要的是要理解,这sudo
不进行 shell 扩展;它运行一个命令。对于您想要做的事情,可能有两种解决方案,每种都有自己的优点/缺点:
1 alias hop='sudo id'
:让sudo
成为别名的一部分或
2 sudo -s
(不带命令),启动一个交互式 shell 并读取/root/.bashrc
。
答案2
[tom@alarm ~]$ sudo -i
[root@alarm ~]# tail -n 1 .bashrc
alias goHome="cd /home/$SUDO_USER"
[root@alarm ~]# goHome
[root@alarm tom]# pwd
/home/tom
[root@alarm tom]#
如果“内置”环境变量不足以满足您的情况,您还可以让 sudo 保留一些自定义变量。例如:
CERTAINFILE="/home/$USER/different_name" sudo -i --preserve-env=CERTAINFILE