自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用source命令將函數(shù)和變量導(dǎo)入Bash

系統(tǒng) Linux
source 就像 Python 的 import 或者 Java 的 include。學(xué)習(xí)它來擴(kuò)展你的 Bash 能力。

[[331311]]

source 就像 Python 的 import 或者 Java 的 include。學(xué)習(xí)它來擴(kuò)展你的 Bash 能力。

登錄 Linux shell 時,你將繼承特定的工作環(huán)境。對于 shell 而言,“環(huán)境environment”意味著已經(jīng)為你設(shè)置了某些變量,以確保你的命令可以按預(yù)期工作。例如,PATH 環(huán)境變量定義 shell 從哪里查找命令。沒有它,幾乎在 Bash 中嘗試執(zhí)行的所有操作都會因“命令未發(fā)現(xiàn)” 錯誤而失敗。在執(zhí)行日常任務(wù)時,環(huán)境對你幾乎是不可見的,但它很重要。

有多種方法可以影響你的 shell 環(huán)境。你可以在配置文件中進(jìn)行修改,例如 ~/.bashrc 和 ~/.profile,你可以在啟動時運(yùn)行服務(wù),還可以創(chuàng)建自己的自定義命令或編寫自己的 Bash 函數(shù) 。

通過 source 添加到你的環(huán)境

Bash(以及其他一些 shell)有一個稱為 source 的內(nèi)置命令。這就是令人困惑的地方:source 執(zhí)行與命令 . 相同的功能(是的,那只是一個點(diǎn)),而與 Tcl 命令的 source 不是同一個(如果你輸入 man source,也許在屏幕上顯示的是它)。實(shí)際上,內(nèi)置的 source 命令根本不在你的 PATH 中。這是 Bash 附帶的命令,要獲取有關(guān)它的更多信息,可以輸入 help source。

. 命令兼容 POSIX。 但 source 命令不是 POSIX 定義的,但可以與 . 命令互換使用。

根據(jù) Bash help,source 命令在你當(dāng)前的 shell 中執(zhí)行一個文件。 “在你當(dāng)前的 shell 中” 這句很重要,因?yàn)樗硎舅粫幼?shell。因此,用 source 執(zhí)行的任何操作都發(fā)生在內(nèi)部并影響當(dāng)前環(huán)境。

在探討 source 對環(huán)境的影響之前,請用 source 命令導(dǎo)入一個測試文件,以確保其按預(yù)期執(zhí)行代碼。首先,創(chuàng)建一個簡單的 Bash 腳本并將其保存為 hello.sh

  1. #!/usr/bin/env bash
  2. echo "hello world"

使用 source,即使該腳本不設(shè)置可執(zhí)行也可以運(yùn)行:

  1. $ source hello.sh
  2. hello world

你也可以使用內(nèi)置的 . 命令獲得相同的結(jié)果:

  1. $ . hello.sh
  2. hello world

source 和 . 命令成功地執(zhí)行了測試文件的內(nèi)容。

設(shè)置變量和導(dǎo)入函數(shù)

你可以使用 source 將文件 “導(dǎo)入” 到 shell 環(huán)境中,就像你可以在 C 或 C++ 中使用 include 關(guān)鍵字引用一個庫,或者在 Python 中使用 import 關(guān)鍵字引入一個模塊一樣。這是 source 的最常見用法之一,它也是 .bashrc 中的一個默認(rèn)包含方式,通過 source 導(dǎo)入 .bash_aliases,以便將任何你自定義的別名在登錄時導(dǎo)入到你的環(huán)境。

這是導(dǎo)入 Bash 函數(shù)的示例。首先,在名為 myfunctions 的文件中創(chuàng)建一個函數(shù)。它將打印你的公共 IP 地址和本地 IP 地址:

  1. function myip() {
  2.         curl <http://icanhazip.com>      
  3.  
  4.         ip addr | grep inet$IP | \
  5.         cut -d"/" -f 1 | \
  6.         grep -v 127\\.0 | \
  7.         grep -v \:\:1 | \
  8.         awk '{$1=$1};1'
  9. }

將該函數(shù)導(dǎo)入你的 shell:

  1. $ source myfunctions

測試新函數(shù):

  1. $ myip
  2. 93.184.216.34
  3. inet 192.168.0.23
  4. inet6 fbd4:e85f:49c:2121:ce12:ef79:0e77:59d1
  5. inet 10.8.42.38

source 的搜索

當(dāng)你在 Bash 中使用 source 時,它將在當(dāng)前目錄中搜索你引用的文件。但并非所有 shell 都這樣,因此,如果你不使用 Bash,請查看文檔。

如果 Bash 找不到要執(zhí)行的文件,它將搜索你的 PATH。同樣,這并不是所有 shell 的默認(rèn)設(shè)置,因此,如果你不使用 Bash,請查看文檔。

這些都是 Bash 中不錯的便利功能。這種出奇地強(qiáng)大,因?yàn)樗试S你將常用函數(shù)保存在磁盤上的一個集中的位置,然后將你的環(huán)境視為集成開發(fā)環(huán)境 (IDE)。你不必?fù)?dān)心函數(shù)的存儲位置,因?yàn)槟阒浪鼈冊谀愕谋镜匚恢玫韧谠?nbsp;/usr/include 下,因此無論你在哪,當(dāng)你導(dǎo)入它們時,Bash 都可以找到它們。

例如,你可以創(chuàng)建一個名為 ~/.local/include 的目錄作為常見函數(shù)存儲區(qū),然后將此代碼塊放入 .bashrc 文件中:

  1. for i in $HOME/.local/include/*;
  2.   do source $i
  3. done

這會將 ~/.local/include 中所有包含自定義函數(shù)的文件“導(dǎo)入”到 shell 環(huán)境中。

當(dāng)你使用 source 或 . 命令時,Bash 是唯一搜索當(dāng)前目錄和 PATH 的 shell。

將 source 用于開源

使用 source 或 . 來執(zhí)行文件是影響環(huán)境同時保持變更模塊化的一種便捷方法。在下次考慮將大量代碼復(fù)制并粘貼到 .bashrc 文件中時,請考慮將相關(guān)函數(shù)或別名組放入專用文件中,然后使用 source 導(dǎo)入它們。

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2022-11-01 16:26:25

Linux命令腳本

2020-06-24 15:30:39

Bashhistory命令Linux

2023-07-12 14:13:03

BashLinux

2021-05-16 08:22:19

Linux命令 Source

2021-05-31 11:30:43

Linuxsource命令

2021-01-18 10:15:40

tee命令BashLinux

2022-12-14 10:08:00

BashLinux

2022-09-27 10:07:01

要使用 source

2023-03-22 18:33:05

Bash變量

2022-11-23 08:14:42

bash 腳本test 命令

2020-09-02 07:43:02

Bash histor命令Linux

2018-12-14 10:00:16

BashLinux命令

2023-06-05 18:26:39

Linux操作系統(tǒng)

2010-06-23 16:09:40

Linux Bash

2010-03-15 10:49:57

Python函數(shù)變量

2015-08-10 14:37:27

LinuxBash環(huán)境變量

2010-06-23 10:03:18

Linux Bash命

2010-06-23 17:34:03

Linux Bash

2018-11-12 14:35:47

BashhereLinux

2010-06-23 17:37:14

Linux Bash
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號