我正在尝试将一些脚本从 tcsh 更新为 bash,以反射(reflect)某些用户对 bash 的偏好。不用说,我不知道csh。有人能告诉我这条线是做什么的吗?
alias prepend 'if (-d \!:2) if ("$\!:1" \!~ *"\!:2"*) export \!:1 "\!:2":${\!:1}'
最佳答案
如果所述目录尚不存在于所述变量中,则可能将目录添加到变量上。
英文是这么说的:如果第二个参数是一个目录,那么如果解释为变量的第一个参数不包含第二个参数的文本,那么“导出”字符串“第二个参数的冒号内容”第一个参数”到第一个参数。
这完全取决于 export
的作用。根据我的经验,export
是 setenv
的别名,但不能保证。
我建议进行测试,看看这是否符合我的想法。首先,回应你的路径。然后运行 prepend PATH/a/new/directory/that/exists
。然后再次回显你的路径。如果您看到“/a/new/directory/that/exists”现在位于您的路径变量中,那么您可以合理地确定 export 是 setenv 的别名。
最后,this SO post lists strategies在其他语言和 shell 中实现类似的事情。
关于bash - TCSH,这条线是做什么的?尝试移植到 BASH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22841730/