2015-07-02 38 views
0

给自己传递的svn diff输出的方面Vimdiff一个标准的脚本,在我的RHEL箱:SVN DIFF调用CSH脚本中调用的.cshrc尽管CSH -f标志

#!/bin/csh -f 
vimdiff ${6} ${7} 

它添加到路径,并设置diff-cmd in〜/ .subversion/config

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

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

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

是svn的(1.6.11版本)这样做本身?任何想法,为什么会发生这种情况,可以做些什么呢?

回答

1

最喜欢它被称为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

+0

提示检查完成这项工作 - 但它使我做了其他事情(通过ssh运行命令,而没有需要脚本运行的交互式shell,我不想在这种情况下运行) 将'svndiff.sh'重命名为'svndiff'停止svn将其称为'csh svndiff.sh',然后使用hashbang(我自然已用'/ bin/bash'替代)。 –

+0

我错了!重命名不能解决问题。更改我的默认shell不会是一个选项,无论如何我需要在我的.bashrc中使用这些脚本,并且我会再次遇到这个问题。没有帮助,我似乎无法迫使svn diff直接调用diff-cmd,而不是在shell内部产卵。 –

+0

管理使用提示检查并通过检查$ HOST来保持我的脚本运行,因为这为我区分了这些情况。谢谢,我仍然有兴趣了解更多关于svn调用(我推测)sh -c'diff-cmd'而不是diff-cmd本身。 –