<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
每次登陸shell 遇到需要敲一行命令來檢視一個問題或者升級一個應用時就感覺很麻煩,可以考慮將函數放到特定的位置,這樣每次登陸shell時就會重新載入。
當你登入Linux系統時,bash shell會作為登入shell啟動。登入shell會從5個不同的啟動檔案裡讀取命令:
/etc/profile檔案是系統上預設的bash shell的主啟動檔案。系統上的每個使用者登入時都會執行這個啟動檔案。
另外4個啟動檔案是針對使用者的,可根據個人需求客製化。
/etc/profile檔案是bash shell預設的的主啟動檔案。只要你登入了Linux系統,bash就會執行
/etc/profile啟動檔案中的命令
剩下的啟動檔案都起著同一個作用:提供一個使用者專屬的啟動檔案來定義該使用者所用到的環境變數。大多數Linux發行版只用這四個啟動檔案中的一到兩個:
注意,這四個檔案都以點號開頭,這說明它們是隱藏檔案(不會在通常的ls命令輸出列表中
出現)。它們位於使用者的HOME目錄下,所以每個使用者都可以編輯這些檔案並新增自己的環境變
量,這些環境變數會在每次啟動bash shell對談時生效
shell會按照按照下列順序,執行第一個被找到的檔案,餘下的則被忽略:
注意,這個列表中並沒有$HOME/.bashrc檔案。這是因為該檔案通常通過其他檔案執行的。
.bash_profile啟動檔案會先去檢查HOME目錄中是不是還有一個叫.bashrc的啟動檔案。如果有的話,會先執行啟動檔案裡面的命令。
[zoms@chm ~]$ cat ~/.bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/.local/bin:$HOME/bin export PATH
到這來可以看到 .bashrc 是如何引入啟動的。
在命令列上建立函數
通過單行方式建立函數
[zoms@chm ~]$ function divem { echo $[ $1 / $2 ]; } [zoms@chm ~]$ divem 100 5 20
在命令列上直接定義shell函數的明顯缺點是退出shell時,函數就消失了。對於複雜的函數來說,這可是個麻煩事。
一個非常簡單的方法是將函數定義在一個特定的位置,這個位置在每次啟動一個新shell的時候,都會由shell重新載入。
最佳地點就是.bashrc檔案。bash shell在每次啟動時都會在主目錄下查詢這個檔案,不管是互動式shell還是從現有shell中啟動的新shell。
可以直接在主目錄下的.bashrc檔案中定義函數。許多Linux發行版已經在.bashrc檔案中定義了一些東西,所以注意不要誤刪了。把你寫的函數放在檔案末尾就行了。這裡有個例子。
cat .bashrc # .bashrc # Source global definitions if [ -r /etc/bashrc ]; then . /etc/bashrc fi function addem { echo $[ $1 + $2 ] }
該函數會在下次啟動新bash shell時生效。隨後你就能在系統上任意地方使用這個函數了。
只要是在shell指令碼中,都可以用source命令(或者它的別名點操作符)將庫檔案中的函數新增到你的.bashrc指令碼中。
cat .bashrc # .bashrc # Source global definitions if [ -r /etc/bashrc ]; then . /etc/bashrc fi . /home/rich/libraries/myfuncs
還可以在當前使用者下的.bashrc 檔案新增自定義別名和函數
[zoms@chm ~]$ cat ~/.bashrc # .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # Uncomment the following line if you don't like systemctl's auto-paging feature: # export SYSTEMD_PAGER= # User specific aliases and functions . /home/zoms/shell/zcm_update.sh
注意:source命令有個快捷的別名,稱作點操作符(dot operator)。要在shell指令碼中執行zcm_update庫檔案,只需新增下面這行:
. /home/zoms/shell/zcm_update.sh
zcm_update 可以定義引數傳參
[zoms@chm ~]$ cat /home/zoms/shell/zcm_update.sh zcm_update(){ if [ $# -eq 0 ] then echo Parameter exception return 1 fi echo $1 sudo supervisorctl stop $1;sudo docker stop $1;sudo docker rm $1;sudo supervisorctl update $1;sudo supervisorctl start $1;sleep 3;sudo supervisorctl status $1 echo sudo supervisorctl status $1 }
# 改造前 # 通過多條命令重建nms-monitor應用 sudo supervisorctl stop nms-test;sudo docker stop nms-test;sudo docker rm nms-test;sudo supervisorctl update nms-test;sudo supervisorctl start nms-test;sleep 3;sudo supervisorctl status nms-test # 改造後 zcm_update nms-test
到此這篇關於bash shell 自定義函數命令持久化生效的文章就介紹到這了,更多相關bash shell 自定義函數命令內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45