Shell-Builtin
在不使用 shell 內置命令的情況下設置 shell 環境變數
我正在使用一個將“命令”作為參數的程序,然後在它周圍添加一些有用的包裝。大概是為了提供幫助,它似乎會檢查以確保命令“存在”。據我所知,這張支票類似於
which
. 在我的 bash shell 命令中,例如set
和export
是內置的,因此which
不返回任何內容。有沒有辦法在不使用內置 shell 的情況下設置環境變數。
我的想法是做一些類似定義
set.sh
的事情#! /bin/bash export $1
但這似乎有點瘋狂
不行。只有shell可以改變自己的環境;
set
並且export
必須始終是內置的。也是如此
cd
,alias
依此類推。我能建議的最好的方法是使用 shell 函式重新實現你的包裝器。您“來源”的那個或shell腳本。無論哪種方式,在shell中執行的包裝器都可以更順暢地完成這些事情。
原始問題的可能解決方法是包裝器的包裝器(不包括 Xzibit 圖像):
#!/bin/bash command="$1" temp=$(mktemp -d) > "$temp/$command" chmod a+x "$temp/$command" PATH+=:$temp your_wrapper rm -r "$temp"
這將創建一個空的執行檔,它將通過您的包裝器的測試,而不會覆蓋您實際要執行的命令(內置命令)。