我一直認爲當前目錄是用戶的東西,而不是腳本,因爲它取決於用戶的位置,每次腳本執行時都可能會有所不同。你應該改變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