如何使root 用户也可以使用中 定义的别名~/.config/fish/config.fish
和 中 定义的函数?~/.config/fish/functions
符号链接到/root/.config/fish
没有完成这项工作。此外,我还希望能够通过 来使用我的函数和别名sudo
,但目前该功能和别名无法正常工作。
你们是怎么做到的?
我没有针对第一个问题的解决方案(我没有任何对 root 用户有用的函数),但第二个问题(不能作为 的参数的函数sudo
)可以使用包装函数来解决:
function sudo
if functions -q $argv[1]
set argv fish -c "$argv"
end
command sudo $argv
end
Run Code Online (Sandbox Code Playgroud)
问题当然是sudo
外部命令(通常位于 /usr/bin/sudo )无法了解函数定义等 Fish 内部结构。所以如果你给它一个函数名,这个包装器就会调用fish。当然,由于这会启动一个新的 Fish 会话,因此有些东西(例如)cd
不会有用,因为它不会改变主 Fish 会话的状态。