1

我正在将我的一些脚本从 shell 移植bashfishshell,但无法访问我的实用程序功能。

重击

这是我在 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 年 12 月 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

当前未安装“今天”程序。您可以通过键入安装它: sudo apt-get install mhc-utils

问题

如何“导出”我的函数,以便在提示符中访问它们?

PS:我的dotfiles 可以在 github 上找到

4

1 回答 1

2

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

在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
于 2015-12-13T12:20:19.610 回答