sudo . source_file 命令未找到

sudo . source_file 命令未找到
. 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将不会得到来源。

为了获得和~/.bashrcsource_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

相关内容