在應(yīng)用程序中按需要對文件進(jìn)行修改后,再用dd
為信州等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及信州網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計制作、成都網(wǎng)站制作、信州網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
燒回去。開機(jī),結(jié)果出現(xiàn)crc錯誤,好吧,原來u-boot為了保證環(huán)境變量的正確性,在環(huán)境變量的前四個字節(jié)儲存了crc效驗碼。開機(jī)搬運環(huán)境變量到內(nèi)存中時如果發(fā)現(xiàn)儲存的crc和開機(jī)計算的不同時就認(rèn)為環(huán)境變量錯誤,會恢復(fù)默認(rèn)變量。
把u-boot中相關(guān)的crc代碼copy到應(yīng)用程序里,這下應(yīng)該搞定了吧?理想是美好的,現(xiàn)實是殘酷的,這次是時好時壞,不太穩(wěn)定。正當(dāng)焦頭爛額的時候,在網(wǎng)上看到了u-boot的env工具。在u-boot源碼的tools文件夾下有個env文件夾。進(jìn)入修改那個配置文件,改成自己板子上nand的塊大小,到u-boot的頂層目錄,make
env,在env下就生成了fw_printenv程序,那網(wǎng)上說的setenv的工具呢?查看相關(guān)的makefile,只有clean部分出現(xiàn)了,env部分是沒有的,那到底在哪里呢?原來只要cp
fw_printenv
fw_setenv就可以了,真的狠神奇。這樣就可以達(dá)到目的了。
配置環(huán)境變量分為系統(tǒng)級和用戶級,系統(tǒng)級所有用戶生效,用戶級針對特定用戶,現(xiàn)場環(huán)境根據(jù)職能不同,會通過用戶限制操作范圍,環(huán)境變量修改以實際需要為準(zhǔn),遵循權(quán)限最小原則。
一般添加系統(tǒng)環(huán)境變量,修改/etc/profile文件,如果操作失誤,刪除重要配置,影響系統(tǒng)運行。
centos7版本中 /etc/profile 默認(rèn)掃描路徑 /etc/profile.d/ 下sh文件,并添加內(nèi)容到環(huán)境變量中,可以通過這種方式不操作/etc/profile增加環(huán)境變量。
在/etc/profile.d/下創(chuàng)建文件 my_env.sh,并設(shè)置環(huán)境變量,如jdk等,內(nèi)容如下:
vi /etc/profile.d/my_env.sh
編輯用戶文件:~/.bash_profile,增加新path配置信息。如jdk:
自定義命令可以實現(xiàn)很多功能,如項目結(jié)構(gòu)化目錄文件生成、系統(tǒng)命令集合、帶參命令自動填充等,腳本功能決定自定義命令的豐富程度。
創(chuàng)建自定義命令文件目錄,方便集中管理,這里在當(dāng)前用戶目錄下創(chuàng)建bin目錄:mkdir ~/bin
創(chuàng)建自定義命令文件,文件名為命令名,如vi ~/bin/print,內(nèi)容打?。篹cho test,添加文件執(zhí)行權(quán)限:chmod 700 ~/bin/print
系統(tǒng)級
編輯/etc/profile.d/my_env.sh文件,增加環(huán)境變量export PATH= PATH:/home/用戶名/bin
測試
控制臺輸入print ,回車即可
| 管道符轉(zhuǎn)發(fā)出去。
比如 cat aaa.txt | less 。
這樣輸出就又 less 進(jìn)行控制。
其次,還可以用 more 。
用 cat 查看大文本文件,真不如用編輯器看。
Shell變量有局部變量、環(huán)境變量之分。局部變量就是指在某個Shell中生效的變量,只在此次登錄中有效。環(huán)境變量通常又稱“全局變量”,雖然在Shell中變量默認(rèn)就是全局的,但是為了讓子Shall繼承當(dāng)前Shell的變量,需要使用export內(nèi)建命令將其導(dǎo)出為環(huán)境變量。
按變量的生存周期劃分:
永久的:需要修改配置文件,變量永久生效。
臨時的:使用export命令聲明即可,變量在關(guān)閉shell時失效。
在配置永久的環(huán)境變量時,又可以按照作用范圍分為:
用戶環(huán)境變量
系統(tǒng)環(huán)境變量。
系統(tǒng)環(huán)境變量對所有系統(tǒng)用戶都有效,用戶環(huán)境變量僅僅對當(dāng)前的用戶有效。
全局(公有)配置,不管是哪個用戶,登錄時都會讀取該文件。
它也是全局(公有)的 bash執(zhí)行時,不管是何種方式,都會讀取此文件。
不要輕易修改此文件
用戶環(huán)境變量通常被存儲在下面的文件中:
若bash是以login方式執(zhí)行時,讀取 ~/.bash_profile ,若它不存在,則讀取 ~/.bash_login ,若前兩者不存在,讀取 ~/.profile 。
若bash是以login方式執(zhí)行時,讀取 ~/.bash_profile ,若它不存,則讀取 ~/.bash_login ,若前兩者不存在,讀取 ~/.profile 。
只有bash是以login形式執(zhí)行時,才會讀取.bash_profile,Unbutu默認(rèn)沒有此文件,可新建。 通常該配置文件還會配置成去讀取 ~/.bashrc 。
當(dāng)bash是以non-login形式執(zhí)行時,讀取此文件。若是以login形式執(zhí)行,則不會讀取此文件。
~/.bash_profile 是交互式、login 方式進(jìn)入 bash 運行的
~/.bashrc 是交互式 non-login 方式進(jìn)入 bash 運行的通常二者設(shè)置大致相同,所以通常前者會調(diào)用后者。
如想將一個路徑加入到環(huán)境變量(例如$PATH)中,可以像下面這樣做(修改/etc/profile):
你可以自己加上指定的路徑,中間用冒號隔開。環(huán)境變量更改后,在用戶下次登陸時生效,如果想立刻生效,則可執(zhí)行下面的語句:
bash會在用戶登錄時,讀取下列四個環(huán)境配置文件:
全局環(huán)境變量設(shè)置文件: /etc/profile 、 /etc/bashrc 。 用戶環(huán)境變量設(shè)置文件: ~/.bash_profile 、 ~/.bashrc 。
讀取順序:① /etc/profile 、② ~/.bash_profile 、③ ~/.bashrc 、④ /etc/bashrc 。
2 .bashrc 和 .bash_profile 的區(qū)別
.bash_profile 會用在登陸shell, .bashrc 使用在交互式非登陸 shell 。簡單說來,它們的區(qū)別主要是 .bash_profile 是在你每次登錄的時候執(zhí)行的; .bashrc 是在你新開了一個命令行窗口時執(zhí)行的。
當(dāng)通過控制臺進(jìn)行登錄(輸入用戶名和密碼):在初始化命令行提示符的時候會執(zhí)行.bash_profile 來配置你的shell環(huán)境。但是如果已經(jīng)登錄到機(jī)器,在Gnome或者是KDE也開了一個新的終端窗口(xterm),這時,.bashrc會在窗口命令行提示符出現(xiàn)前被執(zhí)行。當(dāng)你在終端敲入/bin/bash時.bashrc也會在這個新的bash實例啟動的時候執(zhí)行。
所以對于我自己,我寫了一個 .pathrc 文件
然后在 .bashrc , .zshrc , .bash_profile , /etc/profile 中都加了
下面是 .pathrc 文件
現(xiàn)在,當(dāng)你從控制臺登錄機(jī)器的時候,.bashrc就會被執(zhí)行。
四、常用的環(huán)境變量
BASH Bash Shell的全路徑
CDPATH 用于快速進(jìn)入某個目錄。
PATH 決定了shell將到哪些目錄中尋找命令或程序
HOME 當(dāng)前用戶主目錄
HISTSIZE 歷史記錄數(shù)
LOGNAME 當(dāng)前用戶的登錄名
HOSTNAME 指主機(jī)的名稱
SHELL 當(dāng)前用戶Shell類型
LANGUGE 語言相關(guān)的環(huán)境變量,多語言可以修改此環(huán)境變量
MAIL 當(dāng)前用戶的郵件存放目錄
PS1 基本提示符,對于root用戶是#,對于普通用戶是$
Reference
[1] /etc/profile、/etc/bashrc、 /.bash_profile、 /.bashrc
[2] Linux如何修改env看到的環(huán)境變量? .bashrc和.bash_profile區(qū)別
[3] linux環(huán)境變量,bashrc與bashprofile
env最常用的功能是查詢環(huán)境變量,直接輸入env即可,例如:
bash是Linux下的命令解釋器,目前CentOS,ubuntu,rhce默認(rèn)都使用bash作為解釋器。
這兩者是不一樣的:
set 顯示當(dāng)前shell的變量,包括當(dāng)前用戶的變量
env 顯示當(dāng)前用戶的變量
每個shell都有自己特有的變量,這和用戶變量是不同的。當(dāng)前用戶變量和你用什么shell無關(guān),不管你用什么shell都是存在的。比如HOME,SHELL等這些變量,但shell自己的變量,不同的shell是不同的,比如BASH_ARGC, BASH等,這些變量只有set才會顯示,是bash特有的。
這樣表達(dá)應(yīng)該清楚吧,可以說,env顯示的內(nèi)容是set顯示內(nèi)容的一個子集。