linux命令列在任意目錄下啟動任意的指令碼的方法

2021-08-25 19:47:40 字數 1864 閱讀 7317

這應該算是乙個常識吧,但是對於許多像我們這樣的新手來說,一旦你出點小差錯,整個過程就會很曲折。碰巧今天就遇到了這樣的問題。

下面是查過資料後總結的解決方法:

簡單說path就是一組路徑的字串變數,當你輸入的命令不帶任何路徑時,linux會在path記錄的路徑中查詢該命令。有的話則執行,不存在則提示命令找不到,也就是我們經常看到的-bash: ***: command not found。比如在根目錄/下可以輸入命令ls,在/usr目錄下也可以輸入ls,但其實ls命令根本不在這個兩個目錄下,當你輸入ls命令時linux會去/bin,/usr/bin,/sbin等目錄尋找該命令。而path就是定義/bin:/sbin:/usr/bin等這些路勁的變數,其中冒號為目錄間的分割符。使用export $path命令可以檢視環境變數的內容。

如何自定義路徑:

假設你新編譯安裝了乙個apache在/usr/local/apache下,你希望每次啟動的時候不用敲一大串字元(# /usr/local/apache/bin/apachectl start)才能使用它,而是直接像ls一樣在任何地方都直接輸入類似這樣(# apachectl start)的簡短命令。這時,你就需要修改環境變數path了,準確的說就是給path增加乙個值/usr/local/apache/bin。將/usr/local/apache/bin新增到path中有三種方法:

# path=$path:/usr/local/apache/bin
使用這種方法,只對當前會話有效,也就是說每當登出或登出系統以後,path設定就會失效。

# vi /etc/profile
找到export行,在下面新增加一行,內容為:

export path=$path

:/usr/local/apache/bin。

注:= 等號兩邊不能有任何空格。這種方法最好,除非手動強制修改path的值,否則將不會被改變。
vi ~/.bash_profile
修改path行,把/usr/local/apache/bin新增進去,如:

path=$path:$home/bin:/usr/local/apache/bin。

# source ~/.bash_profile

讓這次的修改生效。

注:這種方法只對當前使用者起作用的,其他使用者該修改無效。

去除自定義路徑:

當你發現新增路徑/usr/local/apache/bin沒用或不需要時,你可以在以前修改的/etc/profile或~/.bash_profile檔案中刪除你曾今自定義的路徑。

除此之外,開啟prifile檔案,你會發現內部邏輯是先對幾個路徑下的變數進行檢索如/bin:/sbin:/usr/bin,如下圖所示

但是一旦你在編輯profile檔案的時候,一不小心,你就會發現很多「可怕」的錯誤,比如linux的基本指令都用不了等等。 所以對於有些你已經配置了path變數,執行相關命令卻未生效時,你就需要留意下,是不是你的profile檔案出了問題,今天就莫名中招了,如下圖所示:

在path下宣告了hive,但是最後輸出環境變數的時候卻發現沒有包含對應的hive的位址,導致最終執行hive命令時無效,最後將hive單獨宣告出來問題就解決了,我也是很鬱悶這是什麼情況…

參考:

linux用命令列快速切換目錄

和很多人一樣,我也是在電腦前度過一天的大部分時間。為了提高效率 並且不讓我的身體有太多的抱怨 我試著建立乙個優化的環境。例如,我使用vim寫 使用vimperator瀏覽網頁,使用 i3 視窗管理器。其他日常事情就是檔案系統導航 從乙個目錄切換到另乙個目錄 譯者注 我更喜歡使用命令列來,但是一遍又一...

Linux命令列批量刪除檔案(目錄)

快速 批量刪除檔案或目錄 1 1.快速刪除大資料夾 注意目錄後的結束符 對於含有海量檔案的目錄,不能直接rm rf刪除,這樣效率很慢 rsync a delete blank test 使用空資料夾 blank 覆蓋原資料夾 test mkdir empty dir rsync a delete e...

Linux 命令列獲取檔案或目錄的大小

可以使用du命令獲取檔案和目錄的大小,用法為 du sb file name 其中 s summarize,總大小,例如目錄的總大小 b bytes 例如 ll umount nfs rwxr xr x.1 lanyang lanyang 188 feb 12 2017 umount nfs du ...