k.s*_*stm 7 shell bash zsh alias
我想根据当前工作目录使用不同的别名(或者可能:相同的别名不同)。例如,我可能想使用一些额外选项l的简写ls。我想使用两种变体:
alias l="ls --sort=extension" # variant A\nalias l="ls --quoting-style=literal" # variant B\nRun Code Online (Sandbox Code Playgroud)\n\n通常,我想使用变体 A。但是,当列出图片 \xe2\x80\x93 时,即当我的工作目录为 时,我想使用变体~/picturesB。(这只是一个最小的例子。我的实际用例更复杂。)
我知道我可以简单地编写l()一个在 的输出上区分大小写的函数$(pwd)。但是,我想要一个更强大的解决方案,它允许我重命名特定目录而不更改任何别名(这不会让我的\xe2\x80\x99t混乱.zshrc)。
但是是否可以覆盖或添加别名,例如通过在相关目录中设置本地.zshrc(就像 vim 和 local 一样.vimrc)?
此外,它(也)可能在 bash 或任何其他 shell 中吗?
\nplugins+=(dotenv)
ZSH_DOTENV_FILE=.any-name-you-like-for-the-per-directory-alias-file
Run Code Online (Sandbox Code Playgroud)
还可以考虑direnv,它允许您导出每个目录中的环境变量.envrc,并在您离开时取消设置它们(这是dotenv不可能的)。direnv 与所有流行的 shell 兼容。但是,它目前不允许您定义别名或函数。
您仍然可以将ilkkachu 的方法与 direnv 结合起来,方法是创建一个函数(而不是别名),该函数根据一个(或多个)环境变量决定要执行的操作,而环境变量又由 direnv 设置。
这两种方法都通过让您手动将点文件的来源目录列入白名单来处理安全问题。
| 归档时间: |
|
| 查看次数: |
5421 次 |
| 最近记录: |