日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Shell Basic

發布時間:2025/3/21 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Shell Basic 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • bash shell 是大多數 Linux 發行版上的默認 shell。如果不是運行在 bash shell 之下,那么可以考慮用以下方式之一對 bash shell 進行實踐。
    • 使用
      chsh -s /bin/bash
      命令來改變默認 shell。這一修改將在下一次登錄時生效。
    • 使用
      su - $USER -s /bin/bash
      命令創建另一個進程,作為當前 shell 的子進程。新進程將是使用 bash 的登錄 shell
    2.env 命令如果不帶任何選項或參數,就顯示當前的環境變量。還可以使用它在定制的環境中執行命令。-i(或只是 -)選項在運行命令之前清理當前環境,而 -u 選項清除您不希望傳遞的環境變量。

    ?

    3.命令行可以使用單引號,也可以使用雙引號。這兩種引號之間有一個重要的差異。shell 將雙引號(")之間的 shell 變量展開,但是在使用單引號(')時不進行展開。

    ?

    4.unset VAR1;echo $VAR1

    ?

    5.歷史

    history
    顯示全部歷史
    history N
    顯示歷史中最后 N 行
    history -d N
    從歷史中刪除第 N 行;例如,如果這一行包含密碼,就可能需要這么做
    !!
    最近的命令
    !N
    第 N 個歷史命令
    !-N
    歷史中倒數第 N 個命令(!-1 相當于 !!)
    !#
    正在輸入的當前命令
    !string
    以 string 開頭的最近的命令
    !?string?

    包含 string 的最近的命令

    ?

    ?6.setenv和export都可以將變量導出給子shell.但語法有所不同。

    setenv VAR1 var1

    export VAR1

    注:它們在變量名前都不加$

    ?

    7.使用命令 set?-u 可以針對引用未定義的變量的情況生成一個錯誤,使用 set?+u 可以禁用這種警告.

    注意取消一個不存在的變量并不會產生錯誤,即使在指定 set?-u 時也是如此。

    ?

    8.可以使用 unset 命令從 Bash shell 中清除變量。可以使用 -v 選項來確保刪除變量定義。函數可以使用與變量相同的名字,因此如果希望清除函數定義,就請使用 -f 選項。在沒有使用 -f 或 -v 的情況下,如果存在這樣一個變量,那么 bash 的 unset 命令就會清除變量定義;否則,如果存在這樣一個函數,這個命令就清除函數定義 .


    9.在登錄 Linux 系統時,您的 id 就有了一個默認 shell,它就是您的登錄 shell。如果這個 shell 是 bash,那么它就會在您控制系統之前先執行幾個配置腳本。如果存在 /etc/profile 文件,就首先執行這個文件。根據發行版的不同,/etc 中的其他腳本也可能會執行,例如 /etc/bash.bashrc 或 /etc/bashrc。這些腳本運行之后,如果主目錄中存在腳本,該腳本也會被執行。Bash 會按照 ~/.bash_profile、~/.bash_login 和 ~/.profile 的順序來查找文件。最先找到的文件會首先執行。

    當您登出系統時,如果主目錄中存在 ~/.bash_logout 腳本,bash 就會執行它。

    一旦登錄進系統并使用 bash,您還可以啟動另外一個 shell(稱為交互式 shell)來運行命令,例如在后臺運行命令。在這種情況中,bash 只會執行 ~/.bashrc 腳本(假設這個腳本存在,如果存在,則是通過使用~/.bash_profile去檢查調用的)。通常可以使用如清單所示的命令在 ~/.bash_profile 檢查這個腳本,以便可以在登錄時或在啟動交互式 shell 時執行它。


    檢查 ~/.bashrc
    # include .bashrc if it exists
    if [ -f ~/.bashrc ]; then
    . ~/.bashrc
    fi

    可以使用 --login 選項強制 bash 像登錄 shell 一樣讀取配置文件(通常在除root用戶外的其他用戶的主目錄下,是沒有~/.bashrc腳本的,它會使用/etc/bashrc腳本)。如果不希望執行登錄 shell 的配置文件,可以指定 --noprofile 選項。類似地,如果希望對某個交互式 shell 不執行 ~/.bashrc 文件,可以使用 --norc 選項來啟動 bash。也可以通過指定 --rcfile 選項加上希望使用的文件名來強制 bash 使用 ~/.bashrc 之外的文件。

    ?

    以其他方式啟動 bash

    除了前面介紹的這種在終端中運行 bash 的標準方法之外,bash 也可以通過其他方法加以使用。

    除非您引用(source) 腳本在當前 shell 中運行,否則它就會在自己的非交互式 shell 中運行,上面的配置文件都不會被讀取。然而,如果設置了 BASH_ENV 變量,那么 bash 就會對這個值進行擴展,并假設它是一個文件名。如果這個文件存在,那么 bash 就會在非交互式 shell 中執行任何腳本或命令之前先執行這個文件。

    ?使用 BASH_ENV


    ian@attic4:~$ cat testenv.sh
    #!/bin/bash
    echo "Testing the environment"
    ian@attic4:~$ cat somescript.sh
    #!/bin/bash
    echo "Doing nothing"
    ian@attic4:~$ export BASH_ENV="~/testenv.sh"
    ian@attic4:~$ ./somescript.sh
    Testing the environment
    Doing nothing

    ?

    非交互式 shell 也可以使用 --login 選項啟動,從而強制配置文件的執行。


    ?


    轉載于:https://www.cnblogs.com/xiaoyixy/archive/2008/08/18/1270236.html

    總結

    以上是生活随笔為你收集整理的Shell Basic的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。