bash - TCSH,这条线是做什么的?尝试移植到 BASH

标签 bash csh tcsh

我正在尝试将一些脚本从 tcsh 更新为 bash,以反射(reflect)某些用户对 bash 的偏好。不用说,我不知道csh。有人能告诉我这条线是做什么的吗?

alias prepend 'if (-d \!:2) if ("$\!:1" \!~ *"\!:2"*) export \!:1 "\!:2":${\!:1}'

最佳答案

如果所述目录尚不存在于所述变量中,则可能将目录添加到变量上。

英文是这么说的:如果第二个参数是一个目录,那么如果解释为变量的第一个参数不包含第二个参数的文本,那么“导出”字符串“第二个参数的冒号内容”第一个参数”到第一个参数。

这完全取决于 export 的作用。根据我的经验,exportsetenv 的别名,但不能保证。

我建议进行测试,看看这是否符合我的想法。首先,回应你的路径。然后运行 ​​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/

相关文章:

bash - 生成特殊文件列表

c++ - 如何将实用程序 (grep/sed) 的返回值分配给数组?

bash - sed:如何将一系列行打印到文件末尾

csh - 采购 csh 脚本时如何获得 `__FILE__`

shell - 如何在 tcsh shell 上映射 Delete 和 End 键?

shell - tcsh - 以破折号 (-) 开头的命令行参数

linux - Shell脚本,失败则停止运行

bash - 如何在状态栏中显示 tmux 环境变量(作为窗口格式)

linux - 使用 linux csh 脚本在许多子目录中执行 makefile

linux - 在文件列表中查找正则表达式