Bash:在脚本中输出所有别名和函数

时间:2013-12-05 06:43:24

标签: bash

采取以下脚本:

shopt -s expand_aliases
set -f
result=$(compgen -A function)
echo $result

运行时输出我的所有自定义bash函数:

mp3gain pkg-pkgbuild-download quote quote_readline restart standby turnoff turnoff-timer youtubeConvert

但是,稍微更改脚本以输出别名时,输出为空:

shopt -s expand_aliases
set -f
result=$(compgen -A alias)
echo $result

如果直接运行compgen -A alias,它就不是空的。

我的别名存储在~/.bash_aliases中,我的功能存储在/.bash_functions中。两者都是~/.bashrc中的来源:

# Functions
if [ -f ~/.bash_functions ]; then
        . ~/.bash_functions
fi

# Aliases
if [ -f ~/.bash_aliases ]; then
        . ~/.bash_aliases
fi

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

我愿意下注别名来源。这可以通过这个简单的脚本验证:

#!/bin/bash
alias

如果没有输出,则不会获取别名。因此,这就是为什么compgen在放入脚本(非源别名)时返回一个空列表,但在带有源别名的shell中手动运行时工作正常。

解决方案:将“source~ / .bash_aliases”放在脚本顶部附近,以确保在运行之前调用它们。