我有一个 .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
第二种方法更好因为它不限制你使用别名,而且还允许定义功能,其威力更加强大。