function run () {
nohup python $1 > nohup.out &
}
在命令行上,我将其称为“run scriptname.py”,bash执行以下命令:
python scriptname.py > nohup.out &
你能帮我翻译成鱼吗?
到目前为止,我有这个...
function run
bash -c "nohup python $1 > nohup.out &"
end
当我在〜/ .config / fish / config.fish
上调用source时这只是说
Error when reading file: ~/.config/fish/config.fish
没有提供任何有用的提示,指出错误是什么。
答案 0 :(得分:4)
这里真的没有必要执行bash
,鱼也可以执行nohup
,重定向也可以这样做。
有一个小的区别,而不是$ 1和$ 2等等,fish函数的参数存储在$ argv数组中。
function run
nohup python $argv > nohup.out &
end
这会将$ argv扩展为每个元素的所有元素,因此run script.py banana
将运行nohup python script.py banana > nohup.out &
。如果你真的只想要传递一个参数,那么你需要$argv[1]
。
我实际上不知道为什么你的定义在导出config.fish时会导致错误 - 你使用的是哪个鱼版?
答案 1 :(得分:2)
这是鱼类功能的完全有效(且更正确)的替代品:
function run
bash -c 'nohup python "$@" > nohup.out &' _ $argv
end
这相当于native-bash函数:
run() {
nohup python "$@" </dev/null >nohup.out 2>&1 &
}
...我个人建议改写使用disown
而不是nohup
。
关于从fish
看到的错误,我建议关注可能影响您的文件是否可读的任何其他(不是语法相关的) - 权限等。< / p>