在一台linux機器上寫好乙個指令碼以後,希望這個指令碼讓這台機器上其他使用者使用,但是不可能會讓別人記住這個指令碼的路徑,這個時候該怎麼辦呢?
在回答上面的問題之前,我們首先思考下面這個問題:為什麼我們用的很多指令都不需要絕對路徑的檔名呢?
我以最常用的ls
指令為例子。首先要檢視指令的執行檔案位置:which ls
。輸出的內容為:/bin/ls
。
為什麼ls
指令就不需要以絕對路徑名就能呼叫呢?
這是因為環境變數path指定了預設的檢索路徑。那麼要怎麼去檢視環境變數呢?
1. 輸出內建變數path:echo $path
2. 檢視所有變數:env
但是有時候我們使用ll
也能呼叫帶有引數的ls
指令,但是使用which ll
卻找不到執行檔案。這是使用了別名alias
指令指定了指令的別名。
其實除此之外我們還可以在path的路徑中新增鏈結檔案指向我們的指令。
由此可知,可以通過以下方式指定指令碼的路徑:
1. 在path變數中新增指令碼路徑
2. 使用alias
指令設定別名
3. 在path中的路徑目錄中增加鏈結檔案
#!/bin/bash
echo
"hello world!"
按esc鍵退出編輯模式,輸入:wq
儲存並退出
嘗試執行指令碼:./mysh.sh
修改profile檔案:vim /etc/profile
,在檔案尾部新增以下內容:export path=$path:/root
。內容中的/root
可以替換為指令碼所在的目錄。
使修改後的profile檔案生效:source /etc/profile
檢查path修改是否生效:echo $path
嘗試執行指令碼:mysh.sh
修改profile檔案:vim /etc/profile
,在檔案尾部新增設定別名的內容,注意要使用全路徑名:alias mysh=/root/mysh.sh
內容中的/root
可以替換為指令碼所在的目錄。
使修改後的profile檔案生效:source /etc/profile
檢查增加別名是否生效:alias mysh
嘗試執行指令碼:mysh
ln
為建立鏈結檔案的指令,-s
引數為建立軟鏈結檔案。/root/mysh.sh
為目標檔案,即需要建立軟鏈結的檔案。/usr/bin/mysh
為建立的軟鏈結檔案。
有時候解壓一些工具,想嘗試執行的時候,不是全路徑名執行,就是跳轉到執行檔案所在的目錄,然後./執行檔名
。
如果是懶得打./
,可以在profile檔案的底部新增以下內容:export path=$path:./
。注意這段內容盡量保證在檔案最後一行。
在最後彙總以下使用到的指令和工具:
1. 檢視檔案資訊:ls
2. 跳轉到某個目錄:cd
3. 輸出指令:echo
5. 檢視環境變數:env
6. 檢視指令或者工具的執行檔案所在路徑:which
7. 別名指令:alias
8. 配置重新整理:source
9. 檔案授權:chmod
10. 設定環境變數:export
shell指令碼如何自定義函式
在寫程式時,經常會用到函式,一般開發工具擁有豐富的函式庫。但有時還需要根據自己的需要自定義函式滿足我們的需求。在linux中,寫shell指令碼也一樣,有時會用到自定義函式。函式,最簡單的定義為 將一組命令集或語句形成乙個可用塊,這些塊稱為函式。1 定義函式的格式 sql view plain co...
自定義 如何自定義協議
何為自定義協議,其實是相對標準協議來說的,這裡主要針對的是應用層協議 常見的標準的應用層協議如http ftp smtp等,如果我們在網路通訊的過程中不去使用這些標準協議,那就需要自定義協議,比如我們常用的rpc框架 dubbo,thrift 分布式快取 redis,memcached 等都是自定義...
PowerDesigner 自定義指令碼
原文 code 表名 tname 生成後的效果預覽 表名 tname if not exists select 1 from sysobjects where id object id qualifier table and type u begin create table qualifier t...