国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

macOS 環(huán)境變量加載探究

這篇具有很好參考價(jià)值的文章主要介紹了macOS 環(huán)境變量加載探究。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

使用 macOS 安裝環(huán)境,見到過(guò)很數(shù)種環(huán)境變量配置方法,每次也都是按照別人的代碼,人家配置在哪 我就配置在哪,其實(shí)不太清楚有什么區(qū)別,決定記錄下。

  • 本機(jī) macOS 13.3,從 macOS Catalina(10.15) 開始,macOS的默認(rèn)終端從bash變成了zsh ,所以在網(wǎng)上經(jīng)??吹降?~/.bash_profile 事實(shí)上是無(wú)法生效的,應(yīng)該修改 ~/.zshrc。
  • 我們常說(shuō)的環(huán)境變量修改有兩種方式,分為系統(tǒng)級(jí)別(對(duì)所有用戶生效)和用戶級(jí)別(對(duì)當(dāng)前用戶生效),像 /etc/profile 這種在 /etc 目錄下的配置則都屬于全局配置,~/ 則屬于用戶級(jí)別的,當(dāng)然 macOS 也不是服務(wù)器,一般就自己一個(gè)人用,也不用分得太清楚。

系統(tǒng)級(jí)別

  1. /etc/profile 文件
    • 語(yǔ)法格式:采用 Shell 命令語(yǔ)法
    • 加載時(shí)間:系統(tǒng)啟動(dòng)時(shí)加載,更新重啟生效。
    • 不建議修改,最好在用戶級(jí)別的配置文件中進(jìn)行個(gè)性化設(shè)置。
  2. /etc/paths 文件:路徑格式,在系統(tǒng)啟動(dòng)時(shí),這些路徑會(huì)被添加到全局的$PATH環(huán)境變量的前面,影響所有用戶和進(jìn)程。
    • 語(yǔ)法格式:每行一個(gè)路徑,沒(méi)有特定的語(yǔ)法格式。
    • 加載時(shí)間:系統(tǒng)啟動(dòng)時(shí)加載,更新重啟生效【但本機(jī)實(shí)測(cè)更新后,打開新終端窗口能夠生效,不確定】。
    • 加載原理:系統(tǒng)啟動(dòng)時(shí),其中的路徑會(huì)被添加到系統(tǒng)的 $PATH 環(huán)境變量的前面
    • 全局環(huán)境變量建議修改這個(gè)文件。
    • macOS 特供(/etc/paths.d/同),在 Linux 系統(tǒng)中通常不是標(biāo)準(zhǔn)配置,Linux 通常使用 /etc/profile/etc/environment
  3. /etc/paths.d/ 目錄:這個(gè)目錄中可以放置其他路徑設(shè)置的文件,每個(gè)文件包含一行一個(gè)路徑。同樣在系統(tǒng)啟動(dòng)時(shí),這些路徑會(huì)被添加到全局的$PATH環(huán)境變量的前面,影響所有用戶和進(jìn)程。
    • 語(yǔ)法格式:每個(gè)文件包含一組路徑,沒(méi)有特定的語(yǔ)法格式。
    • 加載時(shí)間:系統(tǒng)啟動(dòng)時(shí)加載。
    • 加載原理:/etc/profile 腳本中有一行 eval `/usr/libexec/path_helper -s,這個(gè)path_helper工具會(huì)讀取/etc/paths.d目錄下的文件里面的路徑,然后加載在環(huán)境變量$PTAH。

/etc/paths vs /etc/paths.d

  • macOS 系統(tǒng)升級(jí)時(shí),/etc/paths文件在系統(tǒng)升級(jí)時(shí)可能會(huì)被覆蓋或修改【不過(guò)事實(shí)上,我一年多以前配的路徑現(xiàn)在還活的好好的,中間經(jīng)歷過(guò)一次大版本,數(shù)次小版本更新】,導(dǎo)致用戶的自定義路徑設(shè)置丟失,而/etc/paths.d/目錄下的路徑配置通常不會(huì)受到影響。

  • 模塊化:如果一個(gè)軟件需要將自己的可執(zhí)行文件路徑添加到全局$PATH中,它可以在/etc/paths.d/目錄下創(chuàng)建一個(gè)獨(dú)立的文件,這樣具有更高的可維護(hù)性,當(dāng)需要安裝、卸載一個(gè)軟件相關(guān)的路徑時(shí),系統(tǒng)只需要?jiǎng)?chuàng)建、刪除一個(gè)單獨(dú)的文件,整個(gè)路徑配置也更加清晰易懂。

用戶級(jí)別

  1. ~/.bash_profile、~/.bash_login、~/.profile
    • zsh 下不生效,如果想讓其生效,可以修改 ~/.zshrc,在其中添加如:source ~/.bash_profile
    • 語(yǔ)法格式:采用 Shell 命令語(yǔ)法
    • 加載時(shí)間:用戶登錄時(shí)加載,根據(jù)存在的文件依次執(zhí)行,優(yōu)先級(jí)為 ~/.bash_profile > ~/.bash_login > ~/.profile
    • 加載原理:在用戶登錄時(shí)按順序查找,按照從前往后的順序讀取,找到第一個(gè)存在的文件并執(zhí)行其中的命令(后面的幾個(gè)文件就會(huì)被忽略了)
      是否建議修改:建議在這些文件中進(jìn)行個(gè)性化的環(huán)境設(shè)置,因?yàn)樗鼈冎粚?duì)當(dāng)前用戶有效。
    • 建議在這個(gè)文件中設(shè)置用戶級(jí)別的自定義配置,它只影響當(dāng)前用戶的非登錄 shell 環(huán)境

注意:與 Bash 不同,Zsh 并沒(méi)有類似于 Bash 中的 ~/.bash_profile 配置文件。在 Zsh 中,登錄時(shí)的配置任務(wù)主要集中在 ~/.zprofile 文件中。(還有 .zlogin .zshenv 但是我本機(jī)中并沒(méi)有這些文件)
macOS 環(huán)境變量加載探究,macos,macos 環(huán)境變量加載順序
2. ~/.bashrc、~/.zshrc

  • 只在非登錄 shell 中讀取。它通常用于配置終端的行為和設(shè)置用戶自定義的環(huán)境變量。
  • 語(yǔ)法格式:采用 Shell 命令語(yǔ)法
  • 加載時(shí)間:非登錄shell,打開終端窗口時(shí)加載。
  • 加載原理:~/.bashrc 文件通常由 Bash 非登錄 shell 在啟動(dòng)時(shí)加載。它適用于用戶的自定義配置,只影響當(dāng)前終端會(huì)話。
  • 建議在這個(gè)文件中設(shè)置用戶級(jí)別的自定義配置,它只影響當(dāng)前用戶的非登錄 shell 環(huán)境。

登錄 shell 與非登錄 shell

登錄 shell :在用戶登錄系統(tǒng)時(shí)啟動(dòng)的交互式 shell。當(dāng)用戶通過(guò)終端、SSH 或其他方式登錄到系統(tǒng)時(shí),登錄 shell 會(huì)執(zhí)行用戶的登錄配置文件,例如 .bash_profile 等(這些文件根據(jù)所使用的 shell 類型可能有所不同),登錄配置文件通常包含用于設(shè)置環(huán)境變量、執(zhí)行啟動(dòng)腳本以及其他需要在登錄時(shí)進(jìn)行的操作。

非登錄 shell :在已經(jīng)登錄系統(tǒng)的情況下啟動(dòng)的交互式 shell。當(dāng)用戶在登錄后打開新的終端窗口或者運(yùn)行一個(gè) shell 腳本時(shí),會(huì)啟動(dòng)一個(gè)非登錄 shell。非登錄 shell 不會(huì)讀取用戶的登錄配置文件(所以,修改 ~/.bash_login 后需要 source xx 才能生效),而是讀取 ~/.bashrc~/.zshrc等。這些文件通常包含設(shè)置別名、定義函數(shù)、配置 shell 提示符等。

在使用Windows系統(tǒng)時(shí)不會(huì)困惑,因?yàn)閃indows時(shí)典型的單用戶操作系統(tǒng),同時(shí)只允許一個(gè)用戶登錄,但是在使用macOS后,會(huì)比較困惑,到底什么算用戶登錄?我在圖形化界面輸入密碼后按回車?還是每打開一個(gè)終端?困惑的原因也是每次打開終端,都會(huì)有類似 login 的字眼。

macOS 環(huán)境變量加載探究,macos,macos 環(huán)境變量加載順序
通過(guò)幾個(gè)例子來(lái)明確“用戶登錄”的概念,什么算“用戶登錄”,什么算“已經(jīng)登錄”

  1. 通過(guò)命令行登錄一個(gè)無(wú)圖形化界面的Linux操作系統(tǒng):登錄 shell,沒(méi)什么疑問(wèn)。
  2. 通過(guò) SSH 遠(yuǎn)程連接云服務(wù)器:登錄 shell。通過(guò) SSH 遠(yuǎn)程登錄到服務(wù)器時(shí),會(huì)啟動(dòng)登錄 shell,并執(zhí)行你的登錄配置文件,以確保你獲得正確的環(huán)境和配置。
  3. 先通過(guò) SSH 遠(yuǎn)程連接一次云服務(wù)器,同時(shí)連接第二次:每個(gè) SSH 連接都會(huì)啟動(dòng)一個(gè)新的登錄 shell,即使你在同一用戶下打開多個(gè) SSH 連接,它們也是獨(dú)立的登錄 shell。
  4. 通過(guò)用戶登錄界面登錄圖形化界面 Linux 系統(tǒng):登錄 shell,本質(zhì)上與1相同。
  5. 通過(guò)用戶登錄界面登錄圖形化界面 Linux 系統(tǒng)后,再打開一個(gè)終端窗口:非登錄 shell,不會(huì)再次執(zhí)行登錄配置文件,所以為了~/.bash_login中的配置能夠做到重啟終端生效,我們會(huì)在 .bashrc.zshrc 中配置 source ~/.bash_profile
  6. 使用 su 命令切換用戶:非登錄 shell,不會(huì)執(zhí)行目標(biāo)用戶的登錄配置文件。
  7. 執(zhí)行 shell 腳本:非登錄 shell,沒(méi)什么疑問(wèn)。

環(huán)境變量加載順序

Mac系統(tǒng)的環(huán)境變量,加載順序?yàn)椋骸具@里僅就常見的幾種方式做順序展示,中間過(guò)程可能會(huì)有一些遺漏】
bash:/etc/profile -> /etc/paths -> /etc/paths.d/ 文件夾所有內(nèi)容 -> ~/.bash_profile -> ~/.bash_login -> ~/.profile -> ~/.bashrc
zsh:/etc/profile -> /etc/paths -> /etc/paths.d/ 文件夾所有內(nèi)容 -> ~/.zprofile -> ~/.zshrc

參考資料

  • Mac中環(huán)境變量加載順序 - 宋建明 - 博客園 (cnblogs.com)

  • osx - Use /etc/paths or /etc/paths.d to add items to the PATH in macOS Sierra? - Unix & Linux Stack Exchange文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-624123.html

到了這里,關(guān)于macOS 環(huán)境變量加載探究的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • macOS配置Maven和環(huán)境變量

    在 macOS 上配置 Maven 和環(huán)境變量是一個(gè)相對(duì)簡(jiǎn)單的過(guò)程,但需要一定的細(xì)心和注意力。在這篇文章中,我們將介紹如何在 macOS 上安裝 Maven 并配置相關(guān)的環(huán)境變量。 首先,訪問(wèn) Maven 官方網(wǎng)站(https://maven.apache.org)并下載最新版本的 Maven。您應(yīng)該選擇一個(gè)適用于 macOS 的二進(jìn)制

    2024年02月06日
    瀏覽(82)
  • 蘋果電腦 | macOS | jdk1.8 | 環(huán)境變量配置

    蘋果電腦 | macOS | jdk1.8 | 環(huán)境變量配置

    Hello,大家好,相信很多小伙伴和我一樣,在換了蘋果電腦之后,許多東西都需要重新下載,而jdk則是我們Java程序猿最需要的軟件,但是由于macOS和Windows系統(tǒng)的不同,致使我們并不是很熟悉,尤其是在環(huán)境變量配置上;所以,接下來(lái),就由我?guī)Т蠹襾?lái)操作一遍吧!希望可以幫

    2024年02月03日
    瀏覽(27)
  • MacOS環(huán)境變量source生效但重啟后又失效

    https://blog.csdn.net/dxk539687357/article/details/127942044 .bash_profile 和 .zshrc 都是macos系統(tǒng)重環(huán)境變量配置的文件,但是兩者有不同之處。 .bash_profile:在執(zhí)行 source ~/.bash_profile ,只在當(dāng)前窗口生效,但關(guān)閉當(dāng)前終端窗口 或者 mac關(guān)機(jī)重啟后不會(huì)再生效。 .zshrc:在執(zhí)行 source ~/.zshrc ,這是

    2024年02月09日
    瀏覽(15)
  • macos使用搭建算法競(jìng)賽c/c++的g++/gcc編譯環(huán)境(homebrew,含萬(wàn)能頭,改環(huán)境變量,vscode/clion可用)

    macos使用搭建算法競(jìng)賽c/c++的g++/gcc編譯環(huán)境(homebrew,含萬(wàn)能頭,改環(huán)境變量,vscode/clion可用)

    1、homebrew安裝 我沒(méi)改鏡像,直接網(wǎng)上腳本一鍵安裝的,具體命令忘了,可能是這個(gè) 反正裝這個(gè)的方法很多,網(wǎng)上一搜都有。 成功裝上homebrew就行。 2、安裝g++ 裝個(gè)最高的 安裝成功后,終端里的gcc是不會(huì)變的 但是可以用gcc-12進(jìn)行編譯,他的路徑可以where一下看到 也可以 gcc-

    2024年02月07日
    瀏覽(21)
  • export 是一個(gè)在 Unix 和類 Unix 系統(tǒng)(比如 Linux 和 macOS)中常用的 shell 命令,主要用于設(shè)置或?qū)С霏h(huán)境變量。

    export 是一個(gè)在 Unix 和類 Unix 系統(tǒng)(比如 Linux 和 macOS)中常用的 shell 命令,主要用于設(shè)置或?qū)С霏h(huán)境變量。環(huán)境變量是在操作系統(tǒng)中用于存儲(chǔ)系統(tǒng)設(shè)置和命令行程序配置的全局值。下面提供了一些 export 命令的基本用法和示例。 基本用法 設(shè)置環(huán)境變量 : 這里, VARIABLE_NAME 是

    2024年01月19日
    瀏覽(16)
  • 【macOS】:macbook 安裝了兩個(gè)macOS后,設(shè)置默認(rèn)啟動(dòng)的順序

    【macOS】:macbook 安裝了兩個(gè)macOS后,設(shè)置默認(rèn)啟動(dòng)的順序

    【macOS】:macbook 安裝了兩個(gè)macOS后,設(shè)置默認(rèn)啟動(dòng)的順序 如果你的 MacBook 安裝了兩個(gè) macOS 操作系統(tǒng), 你可以通過(guò)以下步驟設(shè)置默認(rèn)啟動(dòng)的順序: 1. 點(diǎn)擊蘋果菜單,選擇“系統(tǒng)偏好設(shè)置”。 2. 點(diǎn)擊“啟動(dòng)磁盤”選項(xiàng)卡。 3. 在列表中選擇你想要設(shè)置為默認(rèn)啟動(dòng)的 macOS 操作系統(tǒng)

    2024年02月05日
    瀏覽(26)
  • macOS Ventura sublime無(wú)法加載Package Control

    突然發(fā)現(xiàn)我的sublime text 的package control不起作用了,設(shè)置也變成灰色的了。 本以為是st出問(wèn)題了,從官網(wǎng)重新下載,然后點(diǎn)菜單命令中的install package control,還是一樣的不起作用。 啟動(dòng)st后,用ctrl+~ 打開st的console, 發(fā)現(xiàn)出錯(cuò)了,最后一行是: Package Control.package_control.deps.oscry

    2024年02月10日
    瀏覽(23)
  • MacOS搭建Flutter 環(huán)境

    第一步:官網(wǎng)下載對(duì)應(yīng)版本的flutter SDK MacOS有兩個(gè)版本:x64和 arm64 查看命令:uname -a 官網(wǎng)鏈接:Flutter SDK archive | Flutter 下載成功后會(huì)自動(dòng)解壓,把Flutter文件放到自己指定的位置。 第二步:打開控制進(jìn)行臨時(shí)配置 第三步:進(jìn)入自己的工具(Android studio/vs code),在設(shè)置中配置flu

    2024年02月07日
    瀏覽(30)
  • MacOS 配置 Fvm環(huán)境

    系統(tǒng)環(huán)境:MacOS 13,M1芯片 1. 安裝HomeBrew: 2. 使用brew安裝Fvm: 3.配置FVM_HOME: 4. 安裝flutter SDK 查看遠(yuǎn)程flutter 發(fā)布的SDK 報(bào)錯(cuò)信息: Failed to retrieve the Flutter SDK from: https://flutter-io.cn/flutter_infra_release/releases/releases_macos.json Fvm will use the value set on env FLUTTER_STORAGE_BASE_URL to check versio

    2024年02月07日
    瀏覽(24)
  • MacOS配置Python環(huán)境

    Python是用來(lái)編寫應(yīng)用程序的高級(jí)編程語(yǔ)言。 Python就為我們提供了 非常完善的基礎(chǔ)代碼庫(kù) ,覆蓋了網(wǎng)絡(luò)、文件、GUI、數(shù)據(jù)庫(kù)、文本等大量?jī)?nèi)容,被形象地稱作“內(nèi)置電池(batteries included)”。 用Python開發(fā),許多功能不必從零編寫,直接使用現(xiàn)成的即可。 Python適合的開發(fā)項(xiàng)目

    2024年02月12日
    瀏覽(28)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包