2015-07-02 50 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本身。 –