免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
理解 Linux/Unix 登錄腳本

/etc/profile~/.bash_profile, ~/.bash_login, and ~/.profile

/etc/profile存在的一個潛在問題是,它位于系統(tǒng)范圍的路徑中。這意味著修改它會影響這個系統(tǒng)上的所有用戶。在個人計(jì)算機(jī)上,這可能不是太大的問題,但是修改它同時還需要root權(quán)限。由于這些原因,每個單獨(dú)的Bash用戶賬戶可以創(chuàng)建~/.bash_profile, ~/.bash_login 和 ~/.profil這幾個文件中的任意一個作為Bash的配置文件來源。在列出的順序中第一個被找到的文件會被作為配置文件,其余的都會被忽略。

其他的shell,例如Dash,支持相似的東西,但是只會查找~/.profile文件。這允許用戶為Bash特定的應(yīng)用場景配置單獨(dú)的.bash_profile文件,如果在某些時候需要切換到Dash或其他shell作為登錄shell(例如通過chsh -s dash命令)??梢员A魚/.profile作為這些shell的配置文件。

需要牢記的一點(diǎn)是,默認(rèn)的Debian框架目錄(/etc/skel,用于存放要復(fù)制到新用戶賬戶主目錄的文件和目錄)包含.profile文件,但不包含.bash_profile和.bash_login文件。此外Debian使用Bash作為默認(rèn)的shell,因此,許多Debian用戶習(xí)慣于將他們的Bash 登錄shell設(shè)置放在.profile文件中。

我曾經(jīng)看到過一些項(xiàng)目的安裝說明,例如RVN,這個項(xiàng)目建議用戶創(chuàng)建一個.bash_profile文件,但是這樣做是非常危險(xiǎn)的,根據(jù)上面提到的知識我們知道,這個會改變用戶的shell環(huán)境。即使用戶沒有修改.profile文件,它也可能利用默認(rèn)~/.profile功能,將~/bin添加到$PATH環(huán)境變量。一個可能提高安全性的選項(xiàng)是,在創(chuàng)建用戶的賬戶之前,將.bash_profile作為.bash_rc的符號鏈接文件,放到/etc/skel目錄中。

如果我們查看Debian Jessie的默認(rèn).profile腳本,我們可以看到下面的代碼片段:

# if running bashif [ -n '$BASH_VERSION' ]; then # include .bashrc if it exists if [ -f '$HOME/.bashrc' ]; then . '$HOME/.bashrc' fifi

這和我們在/etc/profile里面看到的相似,如果shell是Bash,且發(fā)現(xiàn)了/etc/bash.bashrc文件,/etc/bash.bashrc文件就被當(dāng)作Bash的配置文件。這一點(diǎn)的意義將在下一節(jié)討論。

/etc/bash.bashrc 和 ~/.bashrc

啟動的時候,Bash會同時讀取/etc/bash.bashrc和~/.bashrc,但是只有在Bash Shell作為交互式Shell而不是登錄Shell啟動時(意味著通過xtem啟動),會依照這種順序,這是Bash Shell的標(biāo)準(zhǔn)行為。然而,Debian分別從 /etc/profile和~/.profile登錄腳本中獲取配置文件。這會顯著地改變行為,使得/etc/bash.bashrc和.bashrc(如果它們存在)總是在Bash啟動時調(diào)用,而不管是不是登錄Shell。不要期待這種情況在不同地發(fā)行版中是一樣的。

.bashrc是一個添加命令別名的好地方,實(shí)際上,一些用戶擁有太多的別名,以至于他們寧愿將別名都放在一個單獨(dú)的文件中去。Debian的默認(rèn).bashrc會查找.bash_alias,如果這個文件存在的話,會將它作為別名配置來源。所以你可以在這個文件中隨意保存所有的Bash別名。如果用戶愿意的話,.bashrc文件也是用戶重寫shell變量,例如$PS1或者$HISTSIZE的絕佳位置。Debian的默認(rèn).bashrc有超過100行,但是仍然可以非常清晰地閱讀,且有良好地注釋。見名知意,.bashrc不是其他非Bash shell的配置文件來源。

~/.xsession 和 ~/.xsessionrc

如果你是一個GNU/Linux桌面用戶,通過顯示管理器本地登錄(而不是通過getty登錄程序),則/etc/profile和~/.profile不會像預(yù)期的那樣工作。一些顯示管理器會直接將這些文件視為錯誤地配置文件,例如Gnome顯示管理器。但一些其他的顯示管理器,例如LightDm不會這樣。幸運(yùn)的是,你還有一些其他的選項(xiàng)。

當(dāng)啟動X Window系統(tǒng)會話時(不管是用顯示管理或從虛擬終端啟動startx),將會執(zhí)行/etc/X11/Xsessionshell腳本。這基本上相當(dāng)于登錄shell調(diào)用/etc/profile。這個只對X Window生效,并且不是將其作為源配置文件,而是直接執(zhí)行。但是它也相當(dāng)復(fù)雜,類似于/etc/profile怎么從/etc/profile.d目錄中的腳本讀取配置,怎么從/etc/X11/Xsession.d/目錄下的/etc/X11/Xsessions腳本中讀取配置。在/etc/X11/Xsession.d目錄下的所有腳本名稱都以數(shù)字開頭,因此所有的腳本都會按照數(shù)字順序來讀取。

Debian Jessie包含一個名叫40×11-common_xsessionrc的文件,這個文件做的工作就是檢查~/.xsessionrc是不是可讀的,如果是就用它作為配置文件的來源。這就使得~/.xsessions是一個加載環(huán)境變量或者運(yùn)行一個一次性使用程序(例如xrandr或xmodmap)的完美位置(僅適用于X會話)。如果你希望的話,你同樣可以將/etc/profile或~/.profile作為來源。那么任何指定的環(huán)境變量也都會被你的會話管理器繼承(如果還沒有繼承的話)。請注意,默認(rèn)情況下.xsessionrc是不存在的,需要你自己創(chuàng)建這個文件。

如果我們繼續(xù)瀏覽/etc/X11/Xsession中的文件, 我們會發(fā)現(xiàn)50×11-common_determine-startup會決定加載哪個會話管理器。如果~/.xsessions文件存在而且是可執(zhí)行的,它會被保存并且隨后作為99×11-common_start的一部分執(zhí)行,當(dāng)~/.xsession用于運(yùn)行會話管理器,X會話將會被注銷。并且當(dāng)這個腳本終止時,你會返回到顯示管理器登錄界面。

和~/.xsessionrc相似,~/.xsession默認(rèn)也是不存在的,在你需要的時候你可以創(chuàng)建一個。你可能會創(chuàng)建一個類似下面給的簡單的.xsession腳本

# Start our session manager of choice.#exec x-session-manager

其中x-session-manager默認(rèn)設(shè)置為通過update-alternatives命令配置的任何內(nèi)容,這樣,你可以輕松地更改系統(tǒng)范圍默認(rèn)地會話管理器,只需要將x-session-manager替換為/usr/bin/startfce4(切換到XFCE),其他的用戶賬戶將完全不受影響。

當(dāng)然,許多顯示管理器提供從登錄界面直接選擇公共會話管理器的能力,所以這個文件通常是不必要的。然而.xsession提供了更多地靈活性,你可以用任何程序調(diào)用這個文件,而不僅僅是會話管理器。例如,在這里你可以在while循環(huán)中調(diào)用chromium或者iceweasel,而不是執(zhí)行基本的kiosk模式設(shè)置。

~/.bash_logout

我們前面介紹了當(dāng)用戶運(yùn)行交互式Bash登錄shell時讀取的文件,但是如果你想在注銷以后仍然運(yùn)行程序該怎么辦?對于這個用例,~/.bash_logout文件就非常方便了。在Debian中默認(rèn)的配置僅用于清除屏幕(我認(rèn)為從安全角度來說很重要),但是可以輕微地想象以下就知道能用于其他目的,例如,在你離開你的機(jī)器之前顯示一個幾秒鐘的提醒。

主要的限制因素在于.bash_logout僅在注銷交互式shell時讀取,并且并不能假定它在注銷X會話時會被加載。

其他選項(xiàng)

上面那些已經(jīng)為你介紹了大部分的通用選項(xiàng)。其他的選項(xiàng)可能會存在,取決于你的安裝環(huán)境(例如/etc/environment),但是我不認(rèn)為他們可能在其他的平臺上存在,并且極少有需要去接觸它們。

示例

那么你應(yīng)該在哪放置你的系統(tǒng)范圍環(huán)境變量?如果你希望一個環(huán)境變量可以影響所有用戶,/etc/profiled./someifle.sh會是一個好的選擇。但是,這假設(shè)你是使用一個登錄管理器以/etc/profile作為配置來源。如果不是這樣,你可以(作為一個管理員)添加一個腳本到/etc/X11/Xsession.d/來替代/etc/profile作為配置來源。

如果你希望一個腳本可以找到一個私人目錄路徑,并且添加它到你的PATH中,你需要考慮這個目錄是不是會移動很多東西,如果你向.profile添加代碼來實(shí)現(xiàn),用戶需要注銷然后再登錄來更改用戶會話期間的PATH。如果你將代碼添加到.bashrc中,這意味著代碼將在用戶每次打開xterm時執(zhí)行,如果執(zhí)行大約半秒以上可能就不太理想。所以這是一個權(quán)衡取舍的問題。

如果你僅僅是為了你個人登錄會話時的一個環(huán)境變量,且它只關(guān)心X會話,你可以將它添加到~/.xsessionrc中。這樣做的優(yōu)點(diǎn)是,它通常將可用于通過X會話管理器啟動的所有程序,因?yàn)樗趩覺會話管理器之前被設(shè)置,并且被繼承。例如,某些圖形驅(qū)動程序可以通過運(yùn)行

export vblank_mode=0

來禁用vsync。 所以位于.xsessionrc中的變量會影響到所有的程序。

然而如果這一行被添加到.bashrc中,則只有通過xterm登錄的程序會被影響。通過一個窗口管理器啟動的程序照常運(yùn)行。你可以把它添加到.profile,并且從.xessionrc作為.profile的來源。但是之后,當(dāng)你的X服務(wù)沒有在運(yùn)行的時候,你就不需要導(dǎo)出環(huán)境變量。

希望你現(xiàn)在可以更好地了解了登錄和注銷腳本在Debian GNU/Linux系統(tǒng)上的工作原理。如果你已經(jīng)為這些登錄和注銷腳本創(chuàng)建、或者遇到任何特別有趣或有創(chuàng)新的用途,請?jiān)谠u論中告訴我們你是如何做到的。

在接下來的系列中,我們將討論dotfile管理選項(xiàng)。

翻譯作者:碼農(nóng)網(wǎng)– 韓先生

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
.bash
Linux Crontab內(nèi)環(huán)境變量與Shell環(huán)境變量的關(guān)系及解決問題的辦法
crontab環(huán)境變量
Linux中系統(tǒng)變量rc.local、profile、bashrc、bash_profile之間的區(qū)別和聯(lián)系
linux管理任務(wù): 環(huán)境調(diào)優(yōu)
linux環(huán)境變量
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服