如何在鱼壳中导出函数

时间:2015-12-13 11:07:19

标签: shell export fish dotfiles

我将部分脚本从bash移植到fish shell,无法访问我的实用程序函数。

以下是我在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
  

目前尚未安装“今天”程序。您可以输入以下命令安装它:   sudo apt-get install mhc-utils

问题

如何“导出”我的功能,以便我可以在提示中访问它们?

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

1 个答案:

答案 0 :(得分: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