如何在fish shell中的單一環境變數中設定和使用多個參數

如何在fish shell中的單一環境變數中設定和使用多個參數

我想在fishshell 中使用以下內容:

$ export arm='ARCH=arm CROSS_COMPILE=arm-eabi-'
$ make $arm 

這在bash/zsh不是fish外殼上。

fish但是如果我在shell中執行以下命令:

$env tmp=arm make

這很好用。

有人可以幫我解決這個問題嗎?

答案1

您正在尋找set -x

set -x arm 'ARCH=arm CROSS_COMPILE=arm-eabi-'

請參閱關於環境變數的教程部分了解更多。

答案2

sh/ bash

export arm='ARCH=arm CROSS_COMPILE=arm-eabi-'
make $arm

確實沒有意義。環境變數意味著傳遞給的變數make(因此,例如 Makefile 中對 $(arm) 的參考會擴展到其內容)。環境變數是標量,它們只能包含一個字串值。上面您依賴 split+glob 運算符殼的將變數分割成傳遞給的單字make(作為參數)。

但是$arm由 shell 擴展,因此您不需要導出arm到 的環境,make因為make不使用該$arm變數。

此外,在支援它們的 shell 上,使用陣列會更有意義。在bash/ zsh/ ksh

arm=(ARCH=arm CROSS_COMPILE=arm-eabi-)
make "${arm[@]}"

fish

set arm ARCH=arm CROSS_COMPILE=arm-eabi-
make $arm

rc/ es/ zsh

arm=(ARCH=arm CROSS_COMPILE=arm-eabi-)
make $arm

相關內容