フィッシュシェルの単一の環境変数で複数のパラメータを設定して使用する方法

フィッシュシェルの単一の環境変数で複数のパラメータを設定して使用する方法

fishシェルで以下を使用したいと思います。

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

これはbash/zshしかしいいえfishシェルに。

fishただし、シェルで次のコマンドを実行すると:

$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シェルによって拡張されるため、その変数は使用されないため、armエクスポートする環境は必要ありません。makemake$arm

さらに、配列を使用することは、配列をサポートするシェルでより意味があります。存在する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

関連情報