對修改提示符引起的一些問題的理解

有一個練習:提示符修改過后永久保存,每次打開一個新的shell,提示符都為已設定好的格式,不會因為打開新的shell而不同。

在做這個練習的時候遇到了不少問題,通過不斷bing,將起初很陌生的問題一點點的解決,得到了一些理解,因此將理解寫下來。

提示符與變量PS1有關,PS1的值可以被修改或重新賦予。PS1的值變,則提示符也會變。通過搜索得到只要在/etc/bashrc中添加一句PS1=XXXXX就可以解決這個問題,其中XXXXX是一串符合PS1格式的值。可為什么在bashrc中添加一句話就將問題解決了?

要想PS1的值產生作用,那肯定是在打開shell時,系統已經執行過某些文件,然后執行過PS1重新賦值的那條語句。在這要先說下什么是shell,它有幾種,這幾種的區別。

shell是什么?比較專業抽象的解釋我就不說了,我直接舉些實例。當你打開電腦,來到linux的圖形化桌面的時候,其實你已經接觸到一個shell,這個圖形化的操作環境就是一個shell。然后在桌面右鍵,進入一個終端,而這個終端也是一個shell。然后,shell有兩種:login shell和non-login shell。login shell是需要用戶名、密碼登錄后才能進入的shell(或者通過”–login”選項生成的shell);而non-login shell則是不需要密碼和賬號的。從執行文件的順序的角度來講這兩者的區別:

在進入login shell時,系統自動執行的文件及順序:/etc/profile >
/etc/profile.d > ~/.bash_profile > ~/.bashrc > /etc/bashrc。   

在進入non-login shell時,系統自動執行的文件及順序:~/.bashrc > /etc/bashrc
> /etc/profile.d。

因此到這里,可以解釋為什么要在/etc/bashrc下給PS1賦值。無論是以什么方式打開shell,都必然要執行/etc/bashrc,那么就會執行PS1重新賦值的語句,也就會得到想要的提示符。

那/etc/bashrc和~/.bashrc有什么區別? “~”表示的是家目錄,比如root用戶,他的家目錄為/root,那么“~”就等于/root。隱藏文件一般帶有“.”。不同的用戶有不同的家目錄,就有不同的.bashrc。那么系統根據不同的登錄用戶就會執行不同的.bashrc,給予用戶對應的使用習慣。而/etc下的文件設置的內容是全部用戶都相同的。因此如果是在/etc/bashrc對PS1賦值,就會對全部登錄這個系統的用戶有效;如果是在~/.bashrc下對PS1賦值,就會只和對應的用戶有效,而這用戶的提示符就會和別的用戶不同。

/etc/profile和/etc/bashrc有什么區別,它們一般有什么作用?profile是某個用戶唯一的用來設置環境變量的地方,因為用戶可以有多個 shell 比如 bash, sh, zsh 之類的,但像環境變量這種其實只需要在統一的一個地方初始化就可以了,而這就是 profile。bashrc是專門用來給 bash 做初始化的,比如用來初始化 bash 的設置,bash 的代碼補全,bash 的別名,bash 的顏色。以此類推也就還會有 shrc, zshrc 這樣的文件存在。

 

原創文章,作者:Eminem,如若轉載,請注明出處:http://www.www58058.com/81012

(0)
EminemEminem
上一篇 2017-07-15 17:39
下一篇 2017-07-15 19:12

相關推薦

  • 搭建私有CA服務器

       CA(Certificate Authority)證書頒發機構主要負責證書的頒發、管理以及歸檔和吊銷。證書內包含了擁有證書者的姓名、地址、電子郵件帳號、公鑰、證書有效期、發放證書的CA、CA的數字簽名等信息。證書主要有三大功能:加密、簽名、身份驗證。下面來看一下自建CA的過程    一、建立CA服務器 &nbsp…

    Linux干貨 2016-03-14
  • 網絡基礎筆記

    網絡管理筆記 1. 網絡概念:     一組網絡設備或計算機,通過無形的規則鏈接起來的體系!    2. 應用程序種類:     (1)批處理應用程序:            FTP、TFTP、庫存更新    &nbsp…

    Linux干貨 2017-03-16
  • phpMyAdmin安裝部署

    phpMyAdmin安裝部署 phpMyAdmin 是一個用PHP編寫的軟件工具,可以通過web方式控制和操作MySQL數據庫。通過phpMyAdmin 可以完全對數據庫進行操作,例如建立、復制和刪除數據等等。如果使用合適的工具,MySQL數據庫的管理就會變得相當簡單。應用 MySQL 命令行方式需要對 MySQL 知識非常熟悉,對SQL語言也是同樣的道理。…

    2017-06-13
  • Linux程序包管理rpm、yum、源碼編譯

    概述:     眾所周知,Linux操作系統本身,必須要借助額外的一些軟件,才能完成某些應用的,操作系統如果沒有應用程序的填充,就無法創造出生產力,這樣即使再完美的操作系統,也毫無用處。那么本章就簡要介紹一下Linux系統上對程序包的管理,分為以下三個部分:     1、程序包的…

    Linux干貨 2016-08-24
  • 馬哥教育網絡班21期+第7周課程練習

    1、創建一個10G分區,并格式為ext4文件系統; (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; [root@localhost ~]# fdisk /dev/sda WARNING: DOS-compatible mode is&n…

    Linux干貨 2016-08-24
  • 初學Linux文件目錄結構

    /:根目錄 /bin(binary):放置的是二進制文件。可執行的命令;非管理類的命令,通常是系統啟動就需要的文件,供所有用戶使用的基本命令;不能關聯至獨立分區, OS啟動即會用到的程序。 /sbin:管理類的命令,通常只有管理員可以使用。 /lib:存放的是系統級別的庫文件 /lib64:專用于x86_64系統上的輔助共享庫文件存放位置  /ro…

    Linux干貨 2017-07-13
欧美性久久久久