我有以下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
当我摆脱设定路径时,它似乎工作。有任何想法吗?
答案 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在交互使用方面仍有一些优势。)