簡體   English   中英

如何更改 uname 命令搜索 uname 的位置?

[英]How to change where the uname command searches for uname?

我需要有關加載具有內置 platform_check 腳本的軟件的幫助。 我的計划是創建一個名為 uname 的腳本,該腳本在執行時將打印一個接受的平台。 該腳本按我的需要工作,但我不知道如何讓 uname 命令搜索我的自定義 uname 腳本而不是 /bin/uname 默認值。 我曾嘗試使用 PATH 類似 PATH=~/.../path_to_uname:$PATH 這不起作用。 我沒有 root 訪問權限,所以我不能只在其默認位置編輯/創建 uname。

當我像這樣執行腳本時: exec /directory_to_uname/uname 和 /directory_to_uname/uname -r 都按我的意圖工作,我只需要欺騙 shell 來查找我的自定義 uname。

您可以嘗試使用別名來trick shell。 例如(使用 bash)編輯 ~/.bashrc 並添加alias uname='path/to/uname uname' 執行source ~/.bashrc並且命令 uname 將從別名中獲取。 如果在執行uname時將其更改為alias uname='ls -lha'並加載(源命令),它將列出文件/目錄。

假設您有一個這樣調用 uname 的平台檢查腳本,我們將其命名為 test.sh:

#!/bin/bash
uname

初始運行按預期顯示 uname:

user@computer:~$ ./test.sh 
Linux

將 uname 導出為 bash function 以echo您要用於欺騙的內容:

user@computer:~$ function uname {
> echo "hello"
> }
user@computer:~$ export -f uname
user@computer:~$ ./test.sh 
hello

為了知道在命令期間訪問/使用了哪些文件,您可以使用strace命令:

strace -y uname

你會得到一大堆使用的文件和進程,你可能會看到是否有任何可以適應你的需要。

但是,這非常危險(誰知道可能會產生什么副作用?)因此我建議您為uname命令創建alias

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM