如何在 fish shell 中导出函数

How to export a function in fish shell

我正在将我的一些脚本从 bash 移植到 fish shell,但无法访问我的实用程序函数。

Bash

这是我在 bash 中的做法,首先在 "$HOME/.my-posixrc" 中声明我的方法:

function configure_date_utilities() {
    function today() {
        to-lower "$(date '+%Y-%b-%d')"
    }
    function today-num() {
        to-lower "$(date '+%Y-%m-%d')"
    }
    function now() {
        to-lower "$(date '+%Y-%b-%d-%H:%M')"
    }
}

然后获取这个文件:

source "$HOME/.my-posixrc"

所以我能做到:

$ today

2015-dec-13

function configure_date_utilities
    function today
        to-lower (date '+%Y-%b-%d')
    end
    function today-num
        to-lower (date '+%Y-%m-%d')
    end
    function now
        to-lower (date '+%Y-%b-%d-%H:%M')
    end
end

然后在 ~/.config/fish/config.fish 中获取此文件:

source "$HOME/.my-posixrc"

但是方法没有找到:

$ today

The program 'today' is currently not installed. You can install it by typing: sudo apt-get install mhc-utils

问题

如何 "export" 我的函数以便我可以在我的提示中访问它们?

P.S.: 我的dotfiles are available on github.

删除外部函数或在文件中调用它。

在 fish 中,所有函数都是全局的,但是您的内部函数不会被定义,因为它们的定义永远不会 运行。

所以要么:

function configure_date_utilities
    function today
        to-lower (date '+%Y-%b-%d')
    end
    function today-num
        to-lower (date '+%Y-%m-%d')
    end
    function now
        to-lower (date '+%Y-%b-%d-%H:%M')
    end
end
configure_date_utilities

function today
    to-lower (date '+%Y-%b-%d')
end
function today-num
    to-lower (date '+%Y-%m-%d')
end
function now
    to-lower (date '+%Y-%b-%d-%H:%M')
end