如何在不影响生成文件构建的 vim 中添加别名/函数



我通常在我的.bashrc文件中添加多个别名和bash函数。 例如 g 代表 "grep -nri ...", v 代表 vim 等。但是,有时我的新操作系统有一些cmds被我的别名覆盖,因此我看到意外的构建失败。

有没有办法在 bashrc 中添加别名/函数,它应该只在交互式 shell 上运行,不应该通过 makefile 或其他脚本运行?

谢谢。。。

默认情况下,bash 别名的扩展在非交互式会话中处于禁用状态(例如,在执行脚本时(。

您是否在某个地方执行 .bashrc/.profile 中的shopt -s expand_aliases?这将在非交互式会话中启用别名扩展。

为了 100% 安全,您可以在运行之前执行shopt -u expand_aliases,例如 make 脚本。这将取消设置expand_aliases标志。

另一种方法是在运行非交互式会话时完全停止获取 bash 配置文件。这是通过将以下行添加到您的 .profile 或 .bashrc 来实现的:

[[ $- =~ i ]] && return

该行之前的代码仍在非交互式会话中执行。请务必添加下面的自定义别名和函数。

不应为非交互式 shell 定义别名和快捷方式函数,因为其他 shell 脚本可能会混淆您的自定义(正如您发现的那样(。如果执行脚本的 shell 不需要读取和处理所有自定义项,则对性能也有好处。

通常,您可以通过~/.bashrc末尾的 guard 子句执行此操作。将您的自定义项放在该保护之后。

# Generic settings (exports, PATH, ...) here.
# ...
case "$-" in
*i*) ;;
*)   return;;
esac
# Aliases and shortcut functions here
alias rm=...
grep()
{
...
}

最新更新