别名命令执行不正确

莫耶

我正在尝试从github上的要点加载git别名。由于某种原因,该命令执行find,但是当我尝试执行任何别名时,它们要么被错误地映射(例如,gsts-> git stash而不是gsts-> git status),要么它们根本没有被映射。

 #!/bin/bash  

update_git_aliases(){
        GIST_URL='https://gist.githubusercontent.com/Moyoka22/ec605b0b52fee6d6d30d5f72822938f4/raw/git-aliases'

        RESPONSE="$(wget --no-cache -qO- ${GIST_URL})"

        if [ ${?} -ne 0 ]
        then
                echo 'Download failed. Exiting.'
                return 1
        fi

        echo ${RESPONSE} > ${1} 
        chmod +x ${1}
}

DOWNLOAD_FAILED=0
ALIAS_FILE="${HOME}/.config/git-aliases"


if [ ! -f ${ALIAS_FILE} ]
then
        echo "Git aliases not found! Downloading..."
        update_git_aliases ${ALIAS_FILE}
        DOWNLOAD_FAILED=${?}
fi

if [ ${DOWNLOAD_FAILED} -ne 0 ]
then 
        echo "Downloading aliases failed."
        exit 1
fi

cat ${ALIAS_FILE} | bash 

别名命令必须在当前的Shell进程中运行才能生效。

cat ${ALIAS_FILE} | bash 在新的子进程中执行ALIAS_FILE中的别名命令,而不是您的Shell,而不是程序的Shell。

source在当前shell中运行命令。您需要source从当前外壳(而不是程序)中获取文件。您可以在文件更新后执行此操作。为了使它永久存在,您将需要添加source "${HOME}/.config/git-aliases"到您的shell配置中。

像这样的许多程序所做的是在最后打印出必要的命令。

echo "$ALIAS_FILE updated"
echo "Make sure `source $ALIAS_FILE` is in your $HOME/.bash_profile"
echo "Run `source $ALIAS_FILE` to use it in your current shell"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章