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

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