私のWebサーバーには、次の内容を含むファイルfがあります。
alias ll='ls -l'
他のLinuxシステムでは、次のことをしたいが、コマンドを正しく実行できません。
curl http://myserver/f | ?
どこ?各行は現在の環境に読み込まれます。したがって、上記のファイルが与えられると、これは実行と同じ効果を持ちます。
% alias ll='ls -l'
現在のシェルプロセスで。可能ですか?
答え1
試してみてはいかがでしょうかeval "$(curl "$URL")"
?
しかし、正しいURLを取得したこと、ダウンロードしたコードが不快なことをしないことを確認することをお勧めします。
答え2
Bashでは、次のようにコマンド/dev/stdin
出力を1行にリダイレクトしてcurl
から/dev/stdin
ソーシングを試みることができます。
source /dev/stdin <<< "$(curl http://myserver/f)"
これにより、サブシェル(親シェルには表示されません)で(ソース)変数の割り当てを避ける必要があります。
答え3
パイプは常にサブシェルを生成するようです。たぶん、ファイルの交換はここでより適切であるかもしれません。
## this doesn't work
# curl http://myserver/f | . /dev/stdin
## this works
. <(curl http://myserver/f)