我知道在bash中使用alias命令可以在bash中定义自定义函数,甚至可以覆盖内置函数(例如, 别名sudo =“help”起作用)。 unalias -a可以清理使用别名命令所造成的混乱,但unalias也可以是别名(我已经成功运行别名unalias =“unalias”命令,所以我猜这也适用于其他命令 – 我不想搞乱因为它是一个公共计算机)。
我的问题是,如果我把unalias别名,别名也别名,我可以重置命令,如果他们本身不可用? 如果我给sudo别名,会发生什么?
例如,如果我想成为一个巨魔,并在我的一个朋友的机器上运行这个命令
alias sudo="clear" && alias unalias="clear" && alias alias="clear"
所有这些命令将无法使用,所以我相信这将是一个很难恢复sudo的function。 有没有可能重新安装操作系统?
(我可以考虑使用ctrl + alt + f1切换到terminal,但是我不知道别名是否也有别名,如果我在那里做同样的事情呢?)
将DirectoryIndex应用于Apache中的别名
将别名<cmd>透明地改为“do X then <cmd>”
如何用参数创buildgrep别名
为什么我的Nginx别名redirect不起作用(转到404)?
我向用户〜/ .bashrc添加了别名,但是“sudo -u user -i'alias_name'”仍然报告“找不到命令”?
一种常用的技术,在命令前添加一个反斜杠,即 ,以确保避免任何别名,并从系统默认路径运行:
例:
$> alias ps=date $> ps Wed Feb 18 12:33:17 EST 2015 $> ps PID TTY TIME CMD 615 ttys000 0:00.66 -bash 621 ttys001 0:07.36 -bash 913 ttys002 0:01.19 -bash
正如您可以使用运行ps运行系统默认/bin/ps而运行ps运行别名命令date 。
要扩大anubhava的答案 :你也可以使用单引号或双引号:
$ alias ps=date $ ps Wed Feb 18 12:33:17 EST 2015 $ "ps" PID TTY TIME CMD 615 ttys000 0:00.66 -bash 621 ttys001 0:07.36 -bash 913 ttys002 0:01.19 -bash
一般来说,任何评估为ps的表达式都不会被混淆。
如果你想执行一个二进制文件,而不是一个具有相同名称的别名,只需键入二进制文件的完整路径:
/usr/bin/sudo <cmd>
拥有这些别名只能在交互式shell中使用,而不能在shell脚本中使用,也不会破坏其他任何内容。
要“删除”这个别名,只需将它们从.bashrc移除并启动一个新的shell。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。