Linux
覆蓋特定使用者的二進制路徑
我的問題似乎微不足道,但我沒有設法在網際網路上找到任何有用的東西。我有一個二進製文件
/urs/bin/binary
但是它已經過時了,例如在某些安裝上可以使用更新的版本
/mount/new_version/binary
有一個 bash 腳本以如下形式呼叫此二進製文件
binary -doSomething
我需要這個腳本來呼叫新版本的二進製而不是舊版本,但我無權更改這個腳本。是一種以某種方式覆蓋它的路徑但僅適用於我的使用者的方法嗎?任何幫助,將不勝感激。
如果二進製文件在
/usr/bin/binary
其中並且腳本在沒有指定完整路徑的情況下呼叫二進製文件,而是依賴於在/usr/bin
其中,PATH
那麼您可以簡單地將新二進製文件的位置添加到使用者的PATH
. 把這樣的東西放在他們的~/.bashrc
:PATH=/mount/new_version:$PATH
出於安全原因,腳本通常會指定二進製文件的完整路徑以防止此類事情發生。
如果您有權訪問二進製文件,則可以備份它並創建符號連結。
mv /urs/bin/binary /urs/bin/binary.bkp ln -s /mount/new_version/binary /urs/bin/binary
[編輯]
抱歉,沒有看到只能為一個使用者進行更改。
您可以創建一個要呼叫的函式而不是二進製文件。
根據您執行二進製文件的方式(完整路徑或名稱),您必須創建一個合適的函式,例如:
# Full path function /urs/bin/binary () { command /mount/new_version/binary "$@"; } export -f /urs/bin/binary # Name function binary () { command /mount/new_version/binary "$@"; } export -f binary
如果二進製文件不接受/不需要參數,請刪除*"$@"*。
要自動創建函式,請將函式行放在使用者主目錄的 .profile 文件中。