当我尝试将几行代码推送到文件末尾时,出现了权限问题。我知道为什么会出现这个错误,但我想不出解决办法。如能得到任何帮助,我将不胜感激。
sudo cat > /etc/php5/apache2/php.ini << EOF
# extensions
extension=”memcached.so”
extension=”apc.so”
EOF
答案1
Heredoc 用法,或“附加到 EOF”,是不是问题。
所有重定向(包括>
)都是应用前执行实际命令。换句话说,你的 shell 首先尝试打开并/etc/php5/apache2/php.ini
进行写入使用您的帐户,则运行完全无用的sudo cat
。
解决这个问题的一种方法:
sudo bash -c "cat >> /etc/php5/apache2/php.ini" <<EOF
(您可以通过 运行交互式 shell sudo -s
,或者使用dd
或tee
写入文件。)
相关说明一下,使用>
将要覆写旧的 php.ini。用于>>
附加。
答案2
扩展@grawity 的答案,展示如何使用 tee:
sudo tee /etc/php5/apache2/php.ini >/dev/null <<EOF
# extensions
extension=”memcached.so”
extension=”apc.so”
EOF
或者使用 tee 的“-a”选项进行附加而不是覆盖。
答案3
sudo su
然后你就有了一个正确的 shell root
。在那里运行命令,不带sudo
前缀。然后exit
从 root shell 返回。