我使用Ubuntu(亞馬遜EC2),當我鍵入cd
,出現這種情況:爲什麼cd可以調用函數':'?
$ cd
hi
hi
hi
hi
hi
hi
hi
hi
hi
$
我以前曾提出:是一個函數::() { echo hi; }
這發生在頂級shell $SHLVL=1
,但不在任何子shell中(鍵入bash
然後嘗試重現此操作不起作用)。
有誰知道爲什麼會發生這種情況?
我使用Ubuntu(亞馬遜EC2),當我鍵入cd
,出現這種情況:爲什麼cd可以調用函數':'?
$ cd
hi
hi
hi
hi
hi
hi
hi
hi
hi
$
我以前曾提出:是一個函數::() { echo hi; }
這發生在頂級shell $SHLVL=1
,但不在任何子shell中(鍵入bash
然後嘗試重現此操作不起作用)。
有誰知道爲什麼會發生這種情況?
你所做的是一個非常糟糕的主意,因爲:
是shell命令。
在需要命令的結構中不時會很有用。舉例來說,如果你想代碼中使用while
一個無限循環,它可以幫助:
while true ; do
:
done
取出:
並且它沒有很好地形成更多:do
需要一個命令。出了以下三個單行的,只有最後一個是正確的—試戴:
while true do done
while true do ; done
while true do : ; done
如果你重新定義:
作爲一個功能,一個很好的問題是:是,明確界定?但不要介意,假設它有效。突然間,這些不時出現在腳本中的:
將會調用你的函數!
Amazon EC2 shell環境中的cd
是什麼?也許這是一個功能。輸入set
並瀏覽輸出。我經常定義一個自定義的cd
函數;這很有用。您可以執行諸如動態更新提示和窗口標題等內容。
'cd'確實被定義爲'set'所示的函數。我看不清如何調用':',但我沒有檢查整個輸出。謝謝您的回答。 –
「我以前做過:做個功能」......我敢問爲什麼? – ceejayoz
@ceejayoz可能是因爲LDP [提到你可以!](http://www.tldp.org/LDP/abs/html/functions.html);) – Arjan
'cd'是一個函數嗎?是否設置了「PROMPT_COMMAND」?請用'set -x'再次運行上面的代碼並提供輸出。 – kojiro