
今天遇到一些奇怪的行為。想知道這裡是否有人可以告訴我行為有何不同。環境是RHEL 6.7伺服器。
我運行以下命令:
yum list installed *mysql*
如果我的 cwd 是 / 或其他一些地方,我會得到以下輸出:
Installed Packages MySQL-client-advanced.x86_64 5.6.27-1.el6 @/MySQL-client-advanced-5.6.27-1.el6.x86_64 MySQL-server-advanced.x86_64 5.6.27-1.el6 @/MySQL-server-advanced-5.6.27-1.el6.x86_64 MySQL-shared-advanced.x86_64 5.6.27-1.el6 @/MySQL-shared-advanced-5.6.27-1.el6.x86_64 MySQL-shared-compat-advanced.x86_64 5.6.27-1.el6 @/MySQL-shared-compat-advanced-5.6.27-1.el6.x86_64
在其他一些資料夾(包括該伺服器上的 /opt)中,我運行相同的命令並獲得以下輸出:
Error: No matching Packages to list
現在我知道我通常需要轉義這個命令中的通配符。如果我將其運行為:
yum list installed \*mysql\*
然後我在兩個位置都得到正確的輸出。我認為這是因為 bash 通配符的方式。我現在真正想知道的是為什麼它將它放在一個資料夾中但不在另一個資料夾中。我以 root 身份運行, printenv 顯示相同的輸出(除了 PWD),實際上兩次運行命令之間唯一改變的是cd /opt
誰能告訴我為什麼會發生這種情況,或是需要注意哪些事項才能了解為什麼會有所不同? TIA
答案1
這是因為通配符的結果*mysql*
取決於您所在目錄的內容。
為了說明這一點,執行(在每個相關目錄中)
echo yum list installed '*mysql*'
echo yum list installed *mysql*
ls -ld *mysql*