1. linux source命令的作用?
我們可能經(jīng)常需要修改到諸如/etc/profile,~/.bash_profile等這樣的配置文件,
一方面我們希望所作的修改在當(dāng)前的環(huán)境中立即生效;
另一方面也希望所作的修改可以保存起來(lái),以便于下次系統(tǒng)重新系統(tǒng)時(shí)仍然有效,
這時(shí)使用先在~/.bash_profile這樣的配置文件中修改好,再source ~/.bash_profile即可。
如果直接使用export在當(dāng)前shell環(huán)境下修改,其缺點(diǎn)是重新啟動(dòng)系統(tǒng)后修改會(huì)丟失;
如果你修改了配置文件,再重新啟動(dòng)系統(tǒng)以便讓更改生效,顯得太麻煩了。
source ~/.bash_profile與. ~/.bash_profile是等效的,所以source命令又稱為點(diǎn)命令。
2. source ~/.bash_profile != sh ~/.bash_profile,為什么?
sh-# type source
source is a shell builtin
原因是source是linux builtin command,所以source ~/.bash_profile會(huì)在當(dāng)前shell下執(zhí)行;
而sh ~/.bash_profile會(huì)創(chuàng)建一個(gè)child process(sub shell)去執(zhí)行,所以環(huán)境變量的更改設(shè)置
只會(huì)影響到sub shell。
通過(guò)實(shí)驗(yàn)來(lái)進(jìn)行驗(yàn)證,寫(xiě)一個(gè)source_test.sh的script,
#!/bin/sh
export PATH=$PATH:/my_home
echo "$PATH"
在執(zhí)行source_test.sh這個(gè)script前后分別用echo $PATH來(lái)查看path,會(huì)發(fā)現(xiàn)沒(méi)有區(qū)別;
而如果source ./source_test.sh就會(huì)發(fā)現(xiàn)改動(dòng)的$PATH在當(dāng)前shell環(huán)境下生效了,
這驗(yàn)證了上述分析是正確的。
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
