[英]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.