![无法生成 bash 别名](https://linux22.com/image/1392944/%E6%97%A0%E6%B3%95%E7%94%9F%E6%88%90%20bash%20%E5%88%AB%E5%90%8D.png)
在我的 中~/.shortcuts
,我有一些指向一些经常使用的目录的符号链接。
在.bashrc
(OS X)中,我正在这样做:
ls -1 ~/.shortcuts | xargs -I {} alias {}="'cd -P ~/.shortcuts/{}'"
当我alias
在终端中运行时,输出节目新添加的别名但所有别名都不起作用。为什么?
我有一些别名,例如alias ll='ls -l'
在 中定义的.bash_aliases
。. ~/.bash_aliases
在 中执行.bashrc
可以完美地加载我的自定义别名。但是,当我将输出重定向xargs -t
到 tmp 文件并在 bashrc 中将其作为源(就像我 source 一样.bash_aliases
)时,它不起作用。
我究竟做错了什么?
答案1
它不起作用,因为它alias
是在子 shell 中运行的,之后会立即退出。它不会影响启动管道的 shell。
你应该尝试类似这样的方法:
for short in ~/.shortcuts/* ; do
alias $(basename $short)="cd -P $short"
done
这假设该文件夹中没有名称中带有奇怪字符(如空格)的文件。
(一般来说,不要解析输出ls
,使用你的 shell 的通配符函数。)