在fish中对用户定义的函数运行sudo

时间:2018-02-07 00:41:24

标签: fish

» cat ~/.config/fish/config.fish
function take
    command mkdir $argv;and cd $argv
end

function check
  sudo dmesg -c>/dev/null;
  make clean; make;
  /usr/local/bin/kedr start $argv;
  sudo insmod "$argv.ko"; sudo rmmod $argv;
  /usr/local/bin/kedr stop
  dmesg;
end

function sudo
  if functions -q $argv[1]
    set argv fish -c "$argv"
  end
  command sudo $argv
end

跑步时我收到此错误:

» sudo check "simple-no-macro"
fish: Unknown command 'check simple-no-macro'
fish:
check simple-no-macro
^

1 个答案:

答案 0 :(得分:1)

你也在GitHub上问了这个问题,所以这里my answer from there

这里的问题是,您所定义的功能并不存在于您开始的新鱼类实例中。

最好在check中保存的文件中定义~/.config/fish/functions/check.fish函数,然后让该函数跨实例运行。

附注:bash允许您使用环境变量跨实例导出函数,但zsh和ksh都使用类似的方法来捕获 - 请参阅Propagating shell functions from Unix Power Tools