进入文件夹时设置临时b​​ash别名


13

有时,我喜欢在文件夹中输入时具有非常自定义的bash别名和键绑定(可以是一个用来从CLI键入许多命令的项目)。

假设当我输入“ projectAlpha /”之类的文件夹时,我期望一些自定义别名,例如:

  • alias doTaskX='./app arg1 arg2...|filter arg1 arg2...'
  • ...

我想到的不只是:

  • 显示有用的消息,显示别名和常用命令
  • 显示我的项目的一些常见的自定义键绑定

但是,一旦我离开项目的根目录,这些设置就将不可用。

今天最好的方法是什么?


现在想到了在〜/ .bashrc中使用一个别名作为“ cd”的别名,在一个目录中输入一个别名,然后启动一个新的bash来读取该目录中隐藏的.bashrc ...
gzinho

Answers:


14

Bash有特殊变量PROMPT_COMMAND,其内容每次执行后,执行命令,这样你就可以如下设置:

PROMPT_COMMAND='[[ "$PWD" = /tmp ]] && { alias ll=ls; echo "Remember: ll=ls"; } || { unalias ll 2>/dev/null; }'

从现在开始,每次您将在/tmp目录ll中创建别名,并在所有其他目录中将其删除。


可能更实际的方法是将一个函数中的所有别名和其他内容(例如makealias)收集到另一个函数中的所有非别名makeunalias,您可以根据需要运行它们,例如

PROMPT_COMMAND='[[ "$PWD" = /tmp ]] && makealias || makeunalias 2>/dev/null'

请注意,存在stderr重定向只是为了防止某些无用的警报。


ty,我会尝试的。+1(如果我可以的话)
gzinho

1
@ user3697611您不需要任何声誉即可接受您自己问题的答案。单击答案旁边的复选标记。
Barmar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.