Bash

為什麼在 su 之後手冊頁完成失敗?

  • July 31, 2015

我有一個預設的 Debian 8.1 安裝。我願意

su
man apt<TAB>

但一無所獲。man apt-get當我以兩種模式編寫時,我確實看到了手冊:作為使用者 mas 和作為 root。但是,製表符補全僅在使用者模式下有效。

如何在 root 中啟用表完成?為什麼預設禁用此功能?

執行su在非登錄模式下呼叫 bash。然後 Bash 讀取.bashrc以配置其環境。

執行su -呼叫 bash 作為登錄 shell。/etc/profile如果存在,則在此模式下執行。Bash 還會搜尋並執行它找到的第一個文件~/.bash_profile。雖然沒有記錄,但它似乎在這些都不存在時執行。~/.bash_login``~/.profile``~/.bashrc

如果你得到不同的行為,很可能你使用不同的文件來初始化 bash,這取決於它是如何被呼叫的。

我通過echo .bashrc在現有文件的末尾添加類似的行來測試呼叫了哪個文件。這將顯示呼叫了哪些配置。

bash在手冊頁的 INVOCATION 部分中有關於此行為的更多詳細資訊。

Tab 補全在 中可用,bash但在 中不可用shroot通常有sh它的外殼,因為它bash可能不可用。使用者通常擁有bash他們的外殼。

bash嘗試像root在嘗試製表符完成之前一樣執行。這應該啟用選項卡完成。

引用自:https://unix.stackexchange.com/questions/219342