.bashrc 从不同的文件加载别名

.bashrc 从不同的文件加载别名

我有一个 .bashrc 文件,我想设置它以便它从 .aliases 文件中读取别名并进行设置。

目前我有:

# User specific aliases and functions
while read alias_line
do
        echo `alias ${alias_line}`
done < .aliases

但登录后我得到:

-bash:别名:-fu:未找到 -bash:别名:$USER”:未找到

-bash:别名:-lart”:未找到

.aliases 文件如下:

psu="ps -fu $USER" ll="ls -lart"
pico='nano'

答案1

当你使用时alias ${alias_line},变量会被空格分割,忽略引用规则。

有两种方法可以修复此问题:

  • 从别名文件中删除所有引用:

    ll=ls -lart
    psu=ps -fu $USER
    

    并将变量本身放在引号中:

    alias "$alias_line"
    

    这是有效的,因为在 bash 中ll="ls -lart""ll=ls -lart"完全等价。

  • 或者(这是一种更好、更常见的方法),有一个包含alias命令的文件,然后使用.内置函数(又名source)来导入它。

    alias pico='nano'
    alias psu='ps x'
    alias ll='ls -lart'
    

    然后在你的~/.bashrc

    . ~/.aliases
    

第二种方法更好因为它不限制你使用别名,而且还允许定义功能,其威力更加强大。

相关内容