无法生成 bash 别名

无法生成 bash 别名

在我的 中~/.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 的通配符函数。)

相关内容