このコマンドを使用して、URLからrootとしてスクリプトを実行しようとしています。
Sudo bash <(curl -s http://copy.com/gLVZIqUubzcS/popcorn)
しかし、私はこのエラーを得ています:
bash: /dev/fd/63: Aucun fichier ou dossier de ce type
「見つかりません」のフランス語。それが何であるかについてのアイデアはありますか?
PS:私はUbuntu 12.04を実行しています
そのようなプロセス置換を使用しないでください。実際には、とにかくこれだけです:
Sudo sh <<CURL_SCRIPT
$(curl -s http://copy.com/gLVZIqUubzcS/popcorn)
CURL_SCRIPT
または:
curl -s http://copy.com/gLVZIqUubzcS/popcorn | Sudo sh
実行しようとしているスクリプトがbashisms
を使用しない限り、上記は機能します。 bash
のみの構文を使用する場合は、次のようにする必要があります。
curl -s http://copy.com/gLVZIqUubzcS/popcorn | Sudo . /dev/stdin
上記は動作しないようですが、これはSudo
がシェルの組み込み.dot.
を好まないためと考えられます
だからこれを行う:
curl -s http://copy.com/gLVZIqUubzcS/popcorn | Sudo ${0#-} /dev/stdin
あなたも単に行うことができます:
Sudo sh -c "$(curl -s http://copy.com/gLVZIqUubzcS/popcorn)"
代わりにシェルの組み込みを使用できる場合は、bash
実行可能ファイルを再度呼び出す必要はありません。
Sudo
は、stdin、stdout、およびstderr以外のすべての開いているファイル記述子を閉じます(man Sudo
を参照)。したがって、プロセス置換は機能しませんOOTB with Sudo
。
比較する
$ Sudo bash <(echo echo foo)
bash: /dev/fd/63: No such file or directory
そして
$ bash <(echo echo foo)
foo
これを回避することはできますが(または-C
フラグを使用してSudo
)、実行しようとしていることを実行することは、一般的ではありますが、とにかく悪いことです。本当にインストーラーを実行したいだけの場合は、root
- Shell firstを取得してから、残りをSudo
なしで実行します。