Linux中alias命令的脚本在哪里?

Linux中alias命令的脚本在哪里?

我想向 bash 别名脚本添加一个参数,以便我可以运行

alias -p l='ls -l'

它将永久添加到我的 .zshrc 中。但我无法找到别名的 shell 脚本。

我尝试过whereis alias,但是没有成功。甚至man alias显示别名也没有条目。

我进去看了看,/usr/bin, /usr/share/local/bin但没有运气。谁能指出地点吗?

编辑:我还尝试通过以下方式查找所有可能的路径ls $(echo $PATH| tr ':' '\n') | grep alias

答案1

alias是一个内置命令,因此它不会在任何文件中显示为脚本或函数。该type命令将显示:

$ type alias
alias is a shell builtin 

但您仍然可以覆盖它。具有相同名称的函数将屏蔽内置函数,除非使用builtin内置函数显式调用它。

所以,这样的事情应该有效:

alias() {
    if [ "$1" = "-p" ]; then
        echo "-p was given";
        shift;
    fi;
    builtin alias "$@";
}

如果要将相同的别名分配打印到文件,则需要小心地正确引用它,以便它可以用作 shell 的输入。

shift像这样的事情可能会做(添加在函数之后),但请测试它:printf "alias %q\n" "$@" >> ~/my.alias.file

至于 Bash 与 Zsh 的问题,我认为上面的方法对两者都适用,但我不是 Zsh 的专家。


顺便说一句,您可能还想注意 Bashalias已经有一个-p选项help alias

  Options:
    -p        print all defined aliases in a reusable format

我不知道它是否有任何用处,因为alias不带参数的默认行为也是以可重用格式打印所有别名。

答案2

您的alias命令很可能是 shell 内置命令,而不是脚本。您可以使用以下命令进行检查type

user@host:~$ type alias
alias is a shell builtin

要获取有关alias内置函数的文档,您可以查看bash手册页:

man bash

要使别名持久化,您通常会将命令添加到您的 Bash 配置文件之一 - 最有可能是您的~/.bashrc文件,例如:

user@host:~$ echo "alias l='ls -l'" >> ~/.bashrc

答案3

据我所知,zsh不支持持久别名。

如果您喜欢持久别名,我建议您检查一下http://schilytools.sourceforge.net/man/man1/bosh.1.html用于实现具有持久可用性的别名。

对于其他 shell,别名只能作为别名命令写入相关.*shrc文件内。

答案4

我主要使用 bash 并在 .bashrc 中有我的别名。

它位于我的主目录中 /home/myuser/.bashrc 下

相关内容