我想向 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 下