如何在zsh中实现简化全局变量查看的自定义e函数?
解决zsh中通过简易函数快速查看环境变量的问题
你的思路挺实用的,经常查PATH、GOPATH这类变量的话,确实需要个快捷方式。不过你原来的写法出错是因为$($1)是把输入的参数当成命令去执行,而PATH是环境变量不是命令,自然会报"command not found"。
给你两种靠谱的实现方式,都是zsh下能用的:
方法一:用zsh专属的参数展开(推荐)
zsh有个很方便的参数展开标志(P),它能把参数的内容当作变量名来引用。写法如下:
function e() { echo "${(P)1}" }
比如你输入e PATH,$1就是字符串"PATH",${(P)1}就等价于直接写$PATH,完美实现你要的效果。这种方式比eval更安全,不会有执行恶意命令的风险。
方法二:用eval实现(兼容更多shell,但要注意安全)
如果需要兼容bash等其他shell,也可以用eval来实现,但自己用的时候别输入奇怪的参数就行:
function e() { eval "echo \$$1" }
这里\$$1的意思是:第一个\$转义后变成普通的$,第二个$用来引用变量名,最终会被解析成$PATH,再通过eval执行echo命令。
测试一下,不管用哪种方法,输入e PATH或者e GOPATH都能直接输出对应的环境变量内容啦~
内容的提问来源于stack exchange,提问作者megas
相关产品推荐
相关产品推荐

