根檔案系統中命令列提示符的顯示

來源:互聯網
上載者:User

        我們經常用busybox產生根檔案系統,可是根檔案系統起來以後命令列提示符只有一個“#”號,沒有像linux發行版那樣是[user@hostname currentpath] #(例如,root@ubuntu:/rootfs/filesystem/etc# ),那麼我們這裡就說說如何讓我們的根檔案系統按這個方式顯示。

要修改命令列提示符,首先我們需要知道一個環境變數PS1,我們可以查看bash的協助文檔查看關於PS1的說明:

bash有兩級命令提示字元,我們這裡說的是第一級,這一級預設的提示符是字元“$”(超級使用者是“#”),我們可以通過修改PS1修改這個提示符,格式為:
        PS1=”command list”

命令列表有很多參數如下:
        \! 顯示該命令的記錄編號。
        \# 顯示當前命令的命令編號。
        \$ 顯示$符作為提示符,如果使用者是root的話,則顯示#號。
        \\ 顯示反斜線。
        \d 顯示當前日期。
        \h 顯示主機名稱。
        \n 列印新行。
        \nnn 顯示nnn的八進位值。
        \s 顯示當前啟動並執行shell的名字。
        \t 顯示目前時間。
        \u 顯示目前使用者的使用者名稱。
        \W 顯示當前工作目錄的名字。
        \w 顯示當前工作目錄的路徑

我們查看我們發行版linux中的PS1.

root@ubuntu:/# echo $PS1

${debian_chroot:+($debian_chroot)}\u@\h:\w\$

看了發行版是如何顯示命令列提示符,那麼我們再看一下為什麼我們做的根檔案系統只顯示一個#,用busybox產生的根檔案系統使用的是ash,我們看下busybox中關於ash的檔案。

在busybox-1.15.4/shell/ash.h中有這樣的語句

/*
        * PS1 depends on uid
        */
#if ENABLE_FEATURE_EDITING && ENABLE_FEATURE_EDITING_FANCY_PROMPT
        vps1.text = "PS1=\\w \\$ ";
#else
        if (!geteuid())
                vps1.text = "PS1=# ";
#endif

結合上面PS1參數我們可以看出在busybox產生的根檔案系統中可能出現兩種顯示方式,一種是“currentpath $”另一種是 “#”這兩種顯示在較老的版本中都有。

按照上面的方法修改我們的根檔案系統中的命令列提示符。首先我們需要修改buxybox中配置,添加如下兩個選項:

Busybox Settings --->
                Busybox Library Tuning --->

                        [*]   Tab completion  
(Tab縮排功能,這樣就可以和pc機一樣方面提示命令了)
                        [*] Username completion
                        [*] Fancy shell prompts

如果不選擇上面兩項,檔案系統是不是別PS1這個環境變數的參數的。

建立/etc/profile添加如下內容(有了上面的瞭解,下面的設定就不難理解了):

#!/bin/sh
export HOSTNAME=caoyi(你的主機名稱)
export USER=root
export HOME=root
export PS1="[$USER@$HOSTNAME \W]\#"
PATH=/bin:/sbin:/usr/bin:/usr/sbin   
LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
export PATH LD_LIBRARY_PATH

這個時候我們重新啟動我們的開發板會發現命令列提示符已經是我們想要的那種現實了:
[root@caoyi /home]#

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.