我一直认为当前目录是用户的东西,而不是脚本,因为它取决于用户的位置,每次脚本执行时都可能会有所不同。你应该改变shell脚本中的当前目录吗?
所以当我遇到Java jar实用程序-C
选项时,我有点困惑。
对于那些谁也不知道-C
选项指定一个文件/文件夹中的广口瓶中,包括之前使用。由于该文件/文件夹的路径在罐子被复制,在-C
选项更改目录包括前档:
换句话说:
jar -C flower lily.class
将包含一罐lily.class
文件,而:
jar flower/lily.class
会让flower
文件夹中包含lily.class
对于我正在使用的Bourne通配符folder/*
而言,由于它仅适用于下一个立即参数,因此无法使用-C
。
所以使用通配符的唯一方法是从当前目录运行;但我仍然不愿意改变和使用脚本中的当前目录。
在脚本中使用当前目录是否有任何缺点?也许是因为某种原因而皱起了眉头?
我不明白为什么仇恨,因为'cd'是子进程本地的。试试这个:'pwd; (cd ..; PWD); pwd',看到当你退出子shell(用圆括号表示)时,当前目录返回到它开始的地方。无论脚本做什么(除非你“源”而不是执行它),这对用户无关紧要。 – Amadan
没关系,只要把它放回原来的位置即可。 –
@Amadan我意识到这一点,但Gotos也工作,但他们皱起了眉头。我想知道在脚本中是否有类似的改变目录。 – Hawken