1. 程式人生 > >Linux shell PATH 路徑設定小結

Linux shell PATH 路徑設定小結

         近日,在搗鼓Linux下的PATH變數設定,起因是直接執行service命令不行,找不到這個命令,必須加上/sbin,不爽,顧解決之。這一弄,還真學了不少東西。

         首先,Linux 下載入使用者的設定是有順序的,根據不同的shell 型別,讀取的檔名稱有所不同,下圖以bash shell為例:

         

               到這裡有兩個概念:(1)shell 型別 (2)登陸/非登陸  互動/非互動shell

               1 shell 型別

               Linux Shell的種類很多,目前流行的Shell包括ash、bash、ksh、csh、zsh等,使用者可以通過檢視/etc/shells 檔案中的內容來檢視自己主機中當前有哪些種類的Shell,命令如下(下面是在筆者Linux 主機中檢視資訊的結果):

           


# cat /etc/shells  
/bin/sh   /bin/bash   /sbin/nologin   /bin/bash2   /bin/ash   /bin/bsh   /bin/tcsh   /bin/csh 
使用下面的命令來檢視Linux 當前正在使用的Shell 型別:
# echo $SHELL 

      詳細的介紹可參考http://book.51cto.com/art/201106/271627.htm

2     登陸/非登陸  互動/非互動shell

首先,這是兩個不同的維度來劃分的,一個是是否互動式,另 一個是是否登入。
互動式shell和非互動式shell
互動式模式就是shell等待你的輸入, 並且立即執行你提交的命令。這種模式被稱作互動式是因為shell與使用者進行互動。這種模式也是大多數使用者非常熟悉的:登入、執行一些命令、簽退。當你籤 退後,shell也終止了。
shell也可以執行在另外一種模式:非互動式模式,以shell script(非互動)方式執行。在這種模式 下,shell不與你進行互動,而是讀取存放在檔案中的命令,並且執行它們。當它讀到檔案的結尾,shell也就終止了。


chinaunix 論壇中關於登入shell與非登入shell、互動式shell與非互動式Shell的討論:
Login Shell:當init3時,mingetty spawn出登入提示符的時候,你輸入帳號和密碼進入了,出現了shell提示符,這個過程就是登入外殼;
Interactive Shell:接下來你得到了一個像
[email protected]
/>這樣的提示符,你輸入什麼,它就解釋出什麼,這就是互動式外殼;你在當前Shell又fork了一個shell(bash),這個bash也是 互動式外殼。通常情況下interactive shell是login shell派生出來的。
Non Interactive Shell:你可能需要學習寫一個bash script,用外部shell執行:bash  script.sh,它(bash)從第一條命令執行到最後一條然後退出,不與你進行任何互動,它就是 非互動式外殼。
互動式非登入shell就是指你在Gnome圖形介面中開啟“終端”出來的那種視窗程式,
和登入shell 相比,它是“非登入”的,你並不需要輸入使用者名稱和密碼,
和非互動式shell相比,這是“互動式”的,就像你說的那它:你輸入什麼,它就解釋出什麼


執行exit退出非登入shell狀 態;
執行logout退出登入shell狀態。


在登入shell裡,確實只讀取/etc/profile和~ /.bash_profile, ~/.bash_login, and ~/.profile按順序最先的一個,並執行其中的命令。除非被 --noprofile選項禁止了;
在非登入shell裡,確實只讀取 /etc/bash.bashrc和~/.bashrc

     根據shell 型別,如果是bash shell, 修改使用者主目錄下的$HOME/.bashrc(實際上.bash_profile呼叫的), 

     末尾加

    PATH=$PATH:/sbin/

    export  PATH

    如果是ksh shell,修改使用者主目錄下的$HOME/.profile,

     末尾加

    PATH=$PATH:/sbin/

    export  PATH

     3 Linux 下的隱藏檔案

     Linux 下的隱藏檔案,已"."開始,可通過ls -a 命令檢視;

    建立隱藏檔案 vi .aaaa, 加許可權 和普通檔案沒區別,不過,要看檔案許可權等資訊,要轉成非隱藏檔案,通過命令  mv  .aaaa  aaaaa, ls -lrt aaaa,

   mv aaaa .aaaa//再轉成隱藏檔案

 4 Linux使用者環境變數

    環境變數就是系統或軟體設定的一些引數,使用者環境變數就是使用者登入系統後,都有自已專用的執行環境。在Windows系統中使用者環境變數儲存在使用者家目錄,Linux也是同樣的。本文主要是講解Linux常用的環境變數和環境變數的設定。


一、環境變數相關操作(只應用於當前,要永久儲存需要寫入到相關檔案。)
#echo $PATH
顯示PATH設定。
#env
顯示當前使用者變數。
#set
顯示當前Shell變數。
#export
顯示當前匯出成使用者變數的shell變數。
#a=abc
定義一個Shell變數。
#export a=abc
定義一個Shell變數,並匯出成使用者變數。
#unset a
清除環境變數
#readonly a
設定只讀環境變數


二、常見的環境變數
PATH      決定了shell將到哪些目錄中尋找命令或程式
HOME       當前使用者主目錄
HISTSIZE     歷史記錄數
LOGNAME     當前使用者的登入名 
HOSTNAME   指主機的名稱
SHELL      前使用者Shell型別 
LANGUGE     語言相關的環境變數,多語言可以修改此環境變數
MAIL      當前使用者的郵件存放目錄 
PS1       基本提示符,對於root使用者是#,對於普通使用者是$
PS2       附屬提示符,預設是“>”


三、Linux環境變數設定檔案
/etc/profile
全域性使用者,應用於所有的Shell。
/$HOME/.profile
當前使用者,應用於所有的Shell。
/etc/bash_bashrc
全域性使用者,應用於Bash Shell。
~/.bashrc
區域性當前,應用於Bash Sell。

參考自:

http://www.51testing.com/html/38/225738-216858.html

http://hi.baidu.com/inbi_/item/210fd6fd8b89471de3e3bd3d

http://www.2cto.com/os/201301/184129.html

相關推薦

Linux shell PATH 路徑設定小結

         近日,在搗鼓Linux下的PATH變數設定,起因是直接執行service命令不行,找不到這個命令,必須加上/sbin,不爽,顧解決之。這一弄,還真學了不少東西。          首先,Linux 下載入使用者的設定是有順序的,根據不同的shell 型別,

LinuxPATH路徑簡單理解

PATHPATH路徑簡單理解 [root@localhost kang]# vi yy echo YY [root@localhost kang]# chmod +x yy [root@localhost kang]# ./yy YY [root@localhost kang]# pwd /root/kang

linux下關於環境變數的設定,及python中path路徑的優先匹配順序

關於PATH的作用:PATH說簡單點就是一個字串變數,當輸入命令的時候LINUX會去查詢PATH裡面記錄的路徑。比如在根目錄/下可以輸入命令ls,在/usr目錄下也可以輸入ls,但其實ls這個命令根本不在這個兩個目錄下,事實上當你輸入命令的時候LINUX會去/bin,/us

linux設定PATH路徑

在linux中設定PATH的路徑總體來說有兩種方法,臨時型和長期型。 一.臨時型,用這種方法設定的PATH路徑,當系統登出後會消失。 #export PATH=$PATH:mypath 二、長期性

Linux Shell指令碼獲取當前路徑

shell指令碼獲取當前路徑 #方法一 #!/usr/bin/env bash Cur_Dir=$(pwd) echo $Cur_Dir #方法二 #!/usr/bin/env bash basedir=cd $(dirname $0); pwd

javascript新增、讀取、刪除cookie,判斷cookie是否有效,指定domain域下主路徑path設定cookie,設定expires過期時間

有時我們需要用cookie儲存使用者名稱,記錄登入狀態,如何正確判斷該機使用者cookie是否存在呢?不能簡單使用a!=”這樣的寫法。 正確方法是:判斷是否存在名為username3的cookie,使用document.cookie.indexOf(“username3=”)來判斷,如果返回值是

linux下的ftp訪問路徑設定

假設你已經在linux上安裝並配置好了vsftpd伺服器,那麼有時我們想讓訪問者只能特定目錄下的檔案怎麼辦呢? 彆著急,看下面的設定,首先輸入命令  vim  /etc/vsftpd.conf" 開啟配置檔案,新增下面一條語句: local_root=/home/xxx/x

【Python】sys.path.append動態新增搜尋路徑設定

如何將路徑“永久"新增到sys.path? sys.path是Python的搜尋模組的路徑集,是一個list 可以在python 環境下使用sys.path.append(path)新增相關的路徑,但在退出python環境後自己新增的路徑就會自動消失了! 可以使用以下命令輸入當前python 的搜尋

linux 環境變數的設定 PATH=:

Linux 環境變數(export命令) 環境變數啟動過程: 功能說明: 設定或顯示環境變數。(比如我們要用一個命令,但這個命令的執行檔案不在當前目錄,這樣我們每次用的時候必須指定執行檔案的目錄,麻煩,在程式碼中先執行export,這個相當於告訴程式,執行某某東西時,需要的檔案或什麼

Linux Shell指令碼設定lib*.jar

linux下批量遍歷lib下的jar包,預設讀取的是當前目錄下的lib資料夾下的jar包。你將需要的jar包放置lib下,並且指定下執行的類,就可以執行java命令。另外windows下的bat批量遍歷jar包,可以參見 bat 設定lib*.jar #!/bi

[轉]linux shell 獲取當前正在執行指令碼的絕對路徑

常見的一種誤區,是使用 pwd 命令,該命令的作用是“print name of current/working directory”,這才是此命令的真實含義,當前的工作目錄,這裡沒有任何意思說明,這個目錄就是指令碼存放的目錄。所以,這是不對的。你可以試試 bash shell/a.sh,a.sh 內

Linux生成core檔案、core檔案路徑設定

轉載自:http://www.nginx.cn/1521.html 在Linux下產生並除錯core檔案 先看看我用的是個什麼機器: $ uname -a Linux dev 2.4.21-9.30AXsmp #1 SMP Wed May 26 23:37:09 ED

Linux下的QT的庫路徑設定和連線

1 . 系統環境:  Distributor ID: Ubuntu  Description: Ubuntu 14.04.5 LTS  Release: 14.04  Codename: trusty QT工程連結引用第三方庫暫時知道的有兩種方法:  一、在Makefi

linux上傳下載指令及路徑設定

先設定SecureCRT上傳下載檔案儲存路徑   options -> session -> Xmodem/Zmodem -> upload / download  ->  ok   然後確認一下系統中是否有 sz rz 這兩個命令(FreeBSD下

LINUX下多路徑(multi-path)介紹及使用

一、什麼是多路徑 普通的電腦主機都是一個硬碟掛接到一個總線上,這裡是一對一的關係。而到了有光纖組成的SAN環境,或者由iSCSI組成的IPSAN環境,由於主機和儲存通過了光纖交換機或者多塊網絡卡及IP來連線,這樣的話,就構成了多對多的關係。也就是說,主機到儲存可以有多條

linux shell 指令學習小結(一)

有必要總結一發shell指令了。不過我覺得網上的詳細教程還比較多,先知道每個指令幹啥,具體很詳細的引數可以在用的時候去查,用多了就熟了~~ 覺得還不錯的教程傳送門:每天一個linux命令目錄 裡面每個指令介紹的還算詳細,有什麼忘記的其實可以查這個~ ps:

Linux Shell——bash shell 腳本簡介

運行環境 linux 關鍵字 程序 單詞 bash shell 腳本簡介shell 運行環境如果你運行的是 Unix 或 Linux 系統,例如 Ubuntu,Red Hat,SUSE Linux,還有macOS,都是內置了 bash shell 的,所以你不需要額外配置所謂的開發

寫了一個簡單的Linux Shell用來下載文件

logs -- spi http col 內容 style bre shell #!/bin/sh for (( i=0; i<30; i=i+1 )); do # 利用spider來探測請求的資源是否存在,並把請求的結果寫入到一個文件 wget -

Linux Shell 腳本的小技巧——不定期更新

小技巧 linux shell 本文旨在積累平時寫 shell 腳本是遇到的小問題的解決方法。在這裏不定期的更新,以便以後查閱、沿用。 一,在shell 腳本中定義默認值 1. 對默認變量直接賦值 read -p "input>>:" nub nub=

殺死Linux Shell進程

shel china 命名 -name 登錄shell 方法 gin p s 進程 1、查找目標shell進程: 比如:我想要查找 odm_clean 腳本執行進程 ps -ef | grep "odm_clean" hadoop 3702 46809