最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

[oeasy]python0029_放入系統(tǒng)路徑_PATH_chmod_程序路徑_執(zhí)行原理

2022-12-13 18:36 作者:oeasy  | 我要投稿

?

放入路徑

回憶上次內(nèi)容


  • 上次總算可以把 sleep.py 直接執(zhí)行了


    • #!/usr/bin/python3

    • 用的是 python3 解釋 sleep.py


    • sleep.py文件頭部要聲明好打開方式



    • 修改 sleep.py 文件 的執(zhí)行權(quán)限


      • chmod u+x sleep.py


      • 給當(dāng)前用戶增加 執(zhí)行execute 權(quán)限



    • 運(yùn)行./sleep.py成功


      • 但我不想總帶著當(dāng)前路徑./


    • 我想要直接輸入sleep.py回車就自動(dòng)運(yùn)行


      • 這可能么???

    進(jìn)行搜索

    編輯

    按圖索驥

    編輯

    #顯示當(dāng)前路徑 echo $PATH


    • echo $PATH


      • echo : 顯示

      • $ : 說明這是一個(gè) 環(huán)境變量

      • PATH : 能直接運(yùn)行程序的路徑

    編輯


    • $PATH 里面有什么?


      • 這里面有很多路徑

      • 路徑之間用:分隔開


    • 這些路徑下的命令都可以直接執(zhí)行


      • 無需輸入路徑就能直接運(yùn)行

    • 比如我們最熟悉的ls

    執(zhí)行路徑


    • 回憶一下無論我們?cè)谀膫€(gè)目錄下


      • 都能執(zhí)行 ls 命令

    ls #ls 命令在哪 whereis ls # 從路徑直接執(zhí)行l(wèi)s /usr/bin/ls #ls 詳細(xì)信息 ls -lh /usr/bin/ls


    • ls 是 /usr/bin下面的一個(gè)可執(zhí)行文件


      • 大小為139K

    編輯


    • /usr/bin$PATH 的路徑列表里


      • 所以 /usr/bin 下 的 ls 就能直接執(zhí)行

      • 不需要在前面附加路徑 /usr/bin/

      • 只用文件名 ls 就能直接執(zhí)行


    • 而且不論當(dāng)前路徑在哪個(gè)路徑下


      • ls 命令都能直接執(zhí)行


    • 但是


      • 如果環(huán)境變量 $PATH 中沒有/usr/bin

      • 就找不到 ls

      • 就連 ls 也不能執(zhí)行了

    • 真的是這樣嗎?

    迷失路徑


    • 將PATH清空


      • export PATH=

    編輯


    • 沒有了$PATH


      • 真的連ls都找不到了??????

      • 什么都干不了了

      • 你說環(huán)境變量重要不重要?!?????♀?

    重開終端


    • 到桌面上重新打開一個(gè)新的xfce終端(terminal)


      • 再echo 一下 $PATH

      • 路徑就恢復(fù)了


    • 只要如果命令所在路徑在 $PATH 路徑下面


      • 路徑下的程序就可以直接執(zhí)行

    編輯

    • 執(zhí)行路徑為什么有那么多呢?

    執(zhí)行路徑作用


    • 比如我有兩個(gè)不同版本的mc服務(wù)器


      • 都在我的硬盤里

      • 我怎么知道需要用啟動(dòng)哪個(gè)版本呢?


    • 這兩個(gè)啟動(dòng)的位置不同


      • 更明確說

      • 就是可執(zhí)行文件的路徑不同

      • $PATH中誰靠前就執(zhí)行誰下面的命令


    • 類似的需求很多


      • 比如有兩個(gè)不同版本的 tomcat

      • 或者兩個(gè)不同版本的 java

      • 或者不同版本的python3

      • 都可以各自默認(rèn)的執(zhí)行目錄

    • 我們用的這個(gè) python3 到底在哪呢?

    編輯

    python3的位置

    • python3 就在/usr/bin/下面

    編輯

    • python3ls 都在 /usr/bin/下面


    • /usr/bin 的含義


      • binary 二進(jìn)制可執(zhí)行文件

      • unix software resources unix軟件資源


      • usr



      • bin


      分析路徑


      • 路徑中包含 python3 所在的路徑


        • /usr/bin

        • 見下圖紅框

      編輯


      • 無論當(dāng)前路徑在什么位置


        • 系統(tǒng)就去 $PATH 里面從前往后找


        • /usr/bin 當(dāng)中找到了python3


        • 然后執(zhí)行 /usr/bin 中找到的 python3

        • 就不往后找了


        • 只要輸入 python3



        • 只要這個(gè)路徑 /usr/bin$PATH


          • 系統(tǒng)在執(zhí)行命令時(shí)

          • 就會(huì)去 /usr/bin 目錄中搜索命令

        • 那我們把 sleep.py 拷貝到 /usr/bin 不就能被找到了么?


        • 首先得明確


          • 當(dāng)前這個(gè) sleep.py 在哪里呢?

        當(dāng)前位置


        • pwd


          • present working directory

          • 當(dāng)前工作路徑

        編輯


        • 當(dāng)前路徑就在 ~


          • 就是/home/shiyanlou

          • 就是當(dāng)前用戶shiyanlou的用戶文件夾

        • 什么是用戶文件夾呢?

        用戶文件夾

        編輯


        • 我們的系統(tǒng)都是多用戶的


          • 多用戶意味著可以有多個(gè)用戶登錄使用

          • 每個(gè)用戶都有自己的桌面、文檔、下載目錄

        編輯

        編輯

        放入路徑

        #把文件拷貝過去 cp sleep.py /usr/bin #用管理員權(quán)限給考過去 sudo cp ./sleep.py /usr/bin #嘗試執(zhí)行 sleep.py #為當(dāng)前用戶增加可執(zhí)行權(quán)限 chmod u+x /usr/bin/sleep.py #使用管理員權(quán)限提權(quán) sudo chmod u+x /usr/bin/sleep.py #嘗試執(zhí)行 sleep.py #嘗試用管理員執(zhí)行 sudo sleep.py

        編輯

        • 最后 sleep.py 是可以執(zhí)行的


        • 但前提還是


          • 需要在最前面打一個(gè) sudo

          • 進(jìn)行提權(quán)

          • 才能執(zhí)行

        • 如果我想不用sudo就直接運(yùn)行sleep.py呢

        ls的參數(shù)

        編輯


        • 如果不清楚ls參數(shù)作用的話


          • 可以查詢一下幫助

        編輯


        • python之外


          • oeasy也有l(wèi)inux教程

          • 學(xué)完python之后可以去《oeasy教您玩轉(zhuǎn)linux》

          • 看看一些shell命令的細(xì)節(jié)

        分析


        • sleep.py這個(gè)文件


          • 擁有者(owner) 是root

          • 用戶組(group) 是 root

        編輯


        • 當(dāng)前用戶不能直接執(zhí)行


          • 只有 root 才能執(zhí)行

        編輯

        • root代表著最高的權(quán)限

        • 所以必須要加上sudo才可以

        • 那原來的sleep.py為什么可以直接運(yùn)行呢?

        所有者來源

        • 原來的所有者是shiyanlou啊

        編輯

        • 那為什么拷貝到/usr/bin下面之后

        • 所有者就從shiyanlou變成root了呢?

        回憶拷貝過程


        • 回憶一下拷貝的時(shí)候


          • 直接拷貝失敗了

        編輯


        • 只能提權(quán)進(jìn)行拷貝


          • 這時(shí)候cp執(zhí)行者就不是shiyanlou了

          • 而是root

        編輯

        • 此后sleep.py就進(jìn)入了/usr/bin

        • 但是只能被文件所有者root調(diào)用

        • 我想讓普通用戶也能執(zhí)行sleep.py

        • 可以嗎?

        提權(quán)

        • 嘗試再提權(quán)

        #使用管理員權(quán)限提權(quán) sudo chmod a+x /usr/bin/sleep.py #嘗試執(zhí)行 sleep.py


        • a+x 意思是


          • all users 都增加

          • execute 的權(quán)限

        編輯


        • 不同位置的x含義不同


          • 藍(lán)色對(duì)應(yīng) 文件擁有者(owner) - (root)

          • 紅色對(duì)應(yīng) 文件擁有者用戶組(group) - (root)

          • 黃色對(duì)應(yīng) 所有用戶 (all)

        • 目前所有用戶都能執(zhí)行sleep.py了

        問題

        • 可是什么都放到 /usr/bin下面

        編輯

        • 就像雞蛋都放在同一個(gè)籃子里

        編輯

        • 目錄之下非常雜亂

        調(diào)整


        • /usr/bin下面文件


          • 很多

          • 很亂

          • 很不安全

        • 先把 sleep.py/usr/bin 中刪除掉

        #先把/usr/bin下面的sleep.py刪掉 rm /usr/bin/sleep.py #不讓刪就用管理員權(quán)限刪 sudo rm /usr/bin/sleep.py #確認(rèn)刪除 ls /usr/bin/sleep.py

        • 確認(rèn)刪除之后

        編輯


        • 我希望 sleep.py


          • 還放在當(dāng)前用戶文件夾(~)

          • 不動(dòng)

        • 最終還能在任意路徑下執(zhí)行

        • 可能實(shí)現(xiàn)嗎???

        總結(jié)


        • 我們要在任意路徑下直接執(zhí)行 sleep.py


          • sleep.py 放在 /usr/bin/ 下面

          • 最終可以在任意位置執(zhí)行程序sleep.py


        • 但是


          • /usr/bin 里面放的一般都是二進(jìn)制命令文件

          • 命令實(shí)在是太多太亂

          • 最終還是刪除了sleep.py


        • 我想


          • 把宿主目錄添加到系統(tǒng)變量 $PATH

        編輯

        • 這樣有可能嗎???

        • 我們下次再說!*

        • 藍(lán)橋->oeasy 教您玩轉(zhuǎn) python_Python - 藍(lán)橋云課

        • github->https://github.com/overmind1980/oeasy-python-tutorial

        • gitee->oeasy教您玩轉(zhuǎn)python教程: 面向零基礎(chǔ)初學(xué)者的簡明易懂的 Python3 入門課程,對(duì)沒有編程經(jīng)驗(yàn)的同學(xué)也非常友好。在vim下從淺入深,逐步學(xué)習(xí)。從基礎(chǔ)入門學(xué)習(xí)到爬蟲。

        • 視頻->[oeasy]教您玩轉(zhuǎn)python零基礎(chǔ)學(xué)python入門教程(合集)_嗶哩嗶哩_bilibili 作者:oeasy


        [oeasy]python0029_放入系統(tǒng)路徑_PATH_chmod_程序路徑_執(zhí)行原理的評(píng)論 (共 條)

        分享到微博請(qǐng)遵守國家法律
        黎城县| 色达县| 高阳县| 杭锦后旗| 黄梅县| 尼玛县| 来宾市| 偏关县| 临江市| 承德县| 图们市| 阿鲁科尔沁旗| 大庆市| 赫章县| 永安市| 浮梁县| 仁布县| 北安市| 丰镇市| 磐石市| 陵水| 叙永县| 木兰县| 宿迁市| 七台河市| 稷山县| 英山县| 万安县| 天长市| 远安县| 富裕县| 昌图县| 克拉玛依市| 铜梁县| 万荣县| 彩票| 嫩江县| 新巴尔虎左旗| 吴堡县| 敦化市| 科尔|