. source_file
作品。
sudo . source_file
不起作用。
有替换命令吗?
答案1
source
(和别名.
)是内置命令,而不是可执行文件,因此sudo
不能直接工作。
但是,你可以运行:
sudo bash -c 'source /full/path/to/source_file'
这将以 root 身份启动 bash 会话,并source_file
在该会话下执行 source。该文件source_file
当然可以包含在执行 source 时运行的任意数量的命令,但执行完成后 shell 会立即退出。
另一个有用的选项是运行带有 sudo 和 sourcesource_file
作为初始命令的 bash 子 shell。这可以通过多种方式实现。
您可以将其source_file
作为 bash 的初始化文件包含:
sudo bash --init-file /full/path/to/source_file
这将会得到来源source_file
,但另一方面,你的意愿~/.bashrc
将不会得到来源。
为了获得和~/.bashrc
,source_file
我们需要创建一个 bash 可以使用的临时初始化文件:
echo "source ~/.bashrc; source /full/path/to/source_file" > /dev/shm/initfile.rc; sudo bash --init-file /dev/shm/initfile.rc
使用此命令,bash在交互式 root shell 中同时获取~/.bashrc
和(因为它使用您新创建的 init 文件)。source_file