2013-09-16 113 views
0

所以得到这个。我一直在使用./something.sh运行我的脚本,并且将something.sh运行了大约3个月。这些脚本始终从我启动它们的目录运行。脚本始终从当前目录运行/而不是当前目录

现在突然间我的脚本无法工作,因为它们似乎是从/而不是当前目录启动的。例如可以说,我的剧本是这样的:

cd players 

rm * 

而不是去到球员它的错误,因为它无法找到该文件夹​​“的玩家”,然后尝试删除整个根文件系统。 (对我来说幸运的是,我不会将这些作为Sudo或Root来运行)。

任何想法?这是以前的工作,现在刚开始行动起来!

谢谢!

+1

你在哪里运行脚本? – matcheek

+4

你应该立即做的是把你的脚本改成'rm players/*'。之后尝试解决这个问题。 – mnagel

+4

mnagel是对的。但是更好地使用完整路径:'rm/path/to/players/*' –

回答

1

试试这个:

cd ./players 

rm * 

应该达到预期效果!

+0

我会试试这个,如果它有效,我会尝试rm播放器/ * 任何想法什么可能改变? ''' – Linux4Hope

+0

'。'这里指的是当前的工作目录,在你的情况下缺少它。 – Swashbuckler

+0

'cd'已经将相对路径视为相对于当前工作目录。如何明确添加'。/'帮助? – chepner

2

为安全起见,您可以更改一行

cd players && rm * 

它只会删除players的内容,如果它能够成功地改变它。

0

我只能猜测你的脚本现在是以不同的方式启动的;我能想到的最可能的是他们被一个没有主目录(不再有)或类似用户的cron作业调用。

但这真的是在黑暗中的一枪。我建议更多地考虑您的脚本如何开始并就此主题进行调查。

+0

我希望我能说我确实改变了我如何开始他们,但我没有。 :( – Linux4Hope

+0

有些东西已经改变了,你可以通过描述你如何开始脚本来帮助找到答案,然后我可以更多地受到关于什么(更新,用户数据库的变化,网络访问的变化......)已经造成的猜测这个情况。 – Alfe