私はやってみたいです:
echo "something" >> /etc/config_file
しかし、rootユーザーだけがこのファイルへの書き込み許可を持っているので、私はそれができません。しかし、以下もうまくいきません。
Sudo echo "something" >> /etc/config_file
そのような状況で最初にSudo
nameまたは__エディターでファイルを開き、次に新しいコンテンツを手動で追加する必要なしにファイルに追加する方法はありますか?
適切なタスクのための適切なツール: ' tee '
tee - read from standard input and write to standard output and files
コマンドラインは
% echo "output" | Sudo tee -a file
管理者権限でBashを実行するよりもtee
の利点は次のとおりです。
リダイレクトは現在のシェルで実行されます。昇格された特権でリダイレクトを行うためには、シェル自体を昇格された特権で実行する必要があります。
Sudo bash -c "somecommand >> somefile"
Sudoにsub-shellを生成させる:
Sudo sh -c "echo 'Java_HOME=/usr/lib/jvm/Java-6-Sun' >> /etc/profile"
この例では、Sudoは残りを引数として "sh"を実行します。
(これはSudoのmanページに例として示されています)
私は通常 シェルHERE文書 をSudo tee -aと一緒に使います。次の行に沿った何か
Sudo tee -a /etc/profile.d/Java.sh << 'EOF'
# configures Java
JAVA_HOME=/usr/lib/jvm/Java-8-Oracle
export Java_HOME
export PATH=$PATH:$Java_HOME/bin
EOF
私の意見では、この場合の最良のものはddです。
Sudo dd of=/etc/profile <<< END
Java_HOME=/usr/lib/jvm/Java-6-Sun
END
ここSudoとリダイレクトの問題があるかもしれません。行を追加するのではなく、あなたが選んだテキストエディタを使ってください。
Sudo nano /etc/profile
または、代わりにsuを試すこともできます
su
echo ‘Java_HOME=/usr/lib/jvm/Java-6-Sun’ >> /etc/profile
exit
ex - wayを使います。
Sudo ex +'$put =\"FOO\"' -cwq /etc/profile
FOO
を追加する変数に置き換えます。
一部のシステム(OS Xなど)では、/etc/profile
ファイルに444のアクセス許可があるため、それでもアクセス許可が拒否された場合は、最初にアクセス許可を確認して修正します。
Sudo chmod 644 /etc/profile
それからもう一度やり直してください。
Sudoの出力を(>>
を使って)リダイレクトしようとしているのであれば、これはうまくいきません。本当にやりたいことはecho
の出力をリダイレクトすることです。私はあなたが単にあなたの好きなエディタを使って手動で/etc/profile
にその行を追加することを勧めます。これには、/etc/profile
が既にJava_HOME
を設定しているかどうかを確認できるという追加の利点があります。