svn diff 调用 csh 脚本调用 .cshrc 尽管有 csh -f 标志

svn diff calling a csh script calling .cshrc despite csh -f flag

在我的 RHEL 机器上给自己一个标准脚本,用于将 svn diff 输出传递给 vimdiff:

#!/bin/csh -f
vimdiff  

添加到路径中,并在~/.subversion/config

中设置diff-cmd

这很好用,而且我拥有我需要的所有 diff-y 优点。 但是,似乎 csh 的 -f 标志被忽略了,我的 .cshrc 文件正在 运行:我可以看到它在 vimdiff 打开之前发出的回声消息。

我的 .cshrc 连接到一堆许可证服务器,所以需要一段时间,这不太好。

顺便说一句,运行直接使用此脚本 (svndiff.sh x x x x x file1 file2) 不会调用 .cshrc

svn(版本1.6.11)是自己做的吗?知道为什么会发生这种情况以及可以做些什么吗?

很可能它被称为 csh svndiff.sh。 hashbang 仅 如果它被称为 ./svndiff.sh.

则执行

还建议在您的 cshrc 中执行此操作:

setenv PATH ~/Local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/games
# ...more environment settings

# Only load these for interactive shells
if ( $?prompt ) then
  set autolist
  # ...more settings, keybinds, etc.
endif

但是,真的,不要为这种事情使用 csh 脚本。尽可能使用 bourne shell。 1995年的“Csh Programming Considered Harmful”中提出的几乎所有问题在20年后的tcsh中仍然适用。