Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何在shell中预先添加现有别名?_Bash_Shell_Alias_Zsh - Fatal编程技术网

Bash 如何在shell中预先添加现有别名?

Bash 如何在shell中预先添加现有别名?,bash,shell,alias,zsh,Bash,Shell,Alias,Zsh,我有oh my zsh套件中ls的现有别名 igor@shogun ~ % alias ls ls='ls -G' igor@shogun ~ % 此别名取决于各种设置,如操作系统、颜色设置等。因此,我不能只覆盖现有别名,而希望将其前置到如下内容: LC_COLLATE=C ls -G 但这并没有像预期的那样起作用,“-G”消失了: igor@shogun ~ % alias ls='LC_COLLATE ls' igor@shogun ~ % alias ls ls='LC_COLLATE

我有oh my zsh套件中ls的现有别名

igor@shogun ~ % alias ls
ls='ls -G'
igor@shogun ~ %
此别名取决于各种设置,如操作系统、颜色设置等。因此,我不能只覆盖现有别名,而希望将其前置到如下内容:

LC_COLLATE=C ls -G
但这并没有像预期的那样起作用,“-G”消失了:

igor@shogun ~ % alias ls='LC_COLLATE ls'
igor@shogun ~ % alias ls
ls='LC_COLLATE ls'
igor@shogun ~ %
我可以做到:

igor@shogun ~ % alias ls
ls='ls -G'
igor@shogun ~ % alias ls="LC_COLLATE=C `alias ls|sed -E "s/ls='(.*)'/\1/"`"
igor@shogun ~ % alias ls
ls='LC_COLLATE=C ls -G'
igor@shogun ~ %
丑!:)


任何优雅的解决方案?

不依赖于sed等外部程序

eval old$(alias ls);alias ls="LC_COLLATE=C $oldls"