csh shell脚本故障排除

时间:2014-05-20 16:15:05

标签: linux shell csh

我有以下csh shell脚本,它给了我错误,我不太清楚为什么。它基本上说没有找到ls和cp命令

#!/bin/csh
clear

set path="~/SCRAT_SIMs/V6.0/bin/linux/"
echo "Pushing files to: $path" 

ls packages/

cp -r packages/acte_asym     $path 
cp -r packages/acte_hq/      $path   

当我摆脱设定路径时,它似乎工作。有任何想法吗?

1 个答案:

答案 0 :(得分:0)

在csh和tcsh中,$path shell变量和$PATH环境变量绑定在一起。 $PATH(适用于所有内容,而不仅仅是shell)是由:个字符分隔的目录名列表。 $path是一个csh数组变量,它反映了$PATH的内容。

在您的情况下,您只需要选择一个不同的变量名称。

如果您确实想要操纵执行路径,通常应保留$path的现有内容,并在开头或结尾添加新目录。例如:

set path = ( ~/bin $path:q )

如果:q中的某些目录包含空格等有趣的字符,$PATH后缀可以避免出现问题。注意:这里不要使用双引号:

set path = ( ~/bin "$path" )

这会将$path的全部内容扩展为包含嵌入空格的单个字符串; $path:q将其保留为数组。

Obligatory link。 (我以前自己写过csh脚本,但是我发现sh和bash在编程方面要好得多,虽然tcsh在交互使用方面仍有一些优势。)