分页: 1 / 1

如何在执行文件中自动实现文档的编辑?

发表于 : 2016-07-07 12:17
guistar
最近在写一个简单的安装调用包,里面需要编辑profile文档,增加PATH变量

怎么在.sh文档中实现打开/etc/profile并在最后一行 添加固定的代码?

目前我不得不写成两个可执行文件,执行完第一个之后手动增加环境变量再执行第二个

Re: 如何在执行文件中自动实现文档的编辑?

发表于 : 2016-07-07 12:26
vickycq
简单追加内容 重定向 >> 或用 tee -a 即可
复杂需求 使用 ed/sed/awk 一类工具

例 在 /etc/profile 最后增加 export AAA=ccc

代码: 全选

echo "export AAA=ccc" | tee -a /etc/profile

代码: 全选

echo "export AAA=ccc" >> /etc/profile

Re: 如何在执行文件中自动实现文档的编辑?

发表于 : 2016-07-07 13:44
onlylove
如果是一次性使用的变量,直接在脚本里面声明 export下不就完了么 :What 还是说,你这个就是要编辑profile文件?如果要增加系统变量,建议在/etc/profile.d下面新建个文件(不是说不让编辑profile,只是这样比较不容易把profile搞乱)

Re: 如何在执行文件中自动实现文档的编辑?

发表于 : 2016-07-07 14:18
guistar
vickycq 写了:简单追加内容 重定向 >> 或用 tee -a 即可

代码: 全选

echo "export AAA=ccc" >> /etc/profile
我用root权限执行的时候系统提示我权限不够,用root身份执行时没有问题。那么是否意味着我执行这个shell文件时也要用root身份执行才行?

事实上,source命令也提示权限不够,要在root身份下执行。目前我在一个全新的ubuntu14.04系统上debug,不知道是否由于缺少安装某个包,还是说这两个命令本来就只能在root身份下执行呢?

Re: 如何在执行文件中自动实现文档的编辑?

发表于 : 2016-07-07 14:21
guistar
onlylove 写了:如果是一次性使用的变量,直接在脚本里面声明 export下不就完了么 :What 还是说,你这个就是要编辑profile文件?如果要增加系统变量,建议在/etc/profile.d下面新建个文件(不是说不让编辑profile,只是这样比较不容易把profile搞乱)
谢谢。我google了下profile中有个执行profile.d下文件的loop,刚刚亲自试了下确实可行。

Re: 如何在执行文件中自动实现文档的编辑?

发表于 : 2016-07-07 14:33
vickycq
guistar 写了: 我用root权限执行的时候系统提示我权限不够,用root身份执行时没有问题
具体说明 如何使用 root 权限执行的?

若需使用 sudo:

代码: 全选

echo "export AAA=ccc" | sudo tee -a /etc/profile

代码: 全选

sudo bash -c "echo 'export AAA=ccc' >> /etc/profile"

Re: 如何在执行文件中自动实现文档的编辑?

发表于 : 2016-07-07 15:33
guistar
vickycq 写了:
guistar 写了: 我用root权限执行的时候系统提示我权限不够,用root身份执行时没有问题
具体说明 如何使用 root 权限执行的?

若需使用 sudo:

代码: 全选

echo "export AAA=ccc" | sudo tee -a /etc/profile

代码: 全选

sudo bash -c "echo 'export AAA=ccc' >> /etc/profile"

我之前直接在前面加上sudo, 即 sudo echo "xxx">> /etc/profile,提示权限不够。切换root身份执行就没问题。

代码: 全选

sudo bash -c "echo 'export AAA=ccc' >> /etc/profile"
这个代码我今晚试试对比一下。目前电脑在跑这个

Re: 如何在执行文件中自动实现文档的编辑?

发表于 : 2016-07-07 15:51
vickycq
guistar 写了:我之前直接在前面加上sudo, 即 sudo echo "xxx">> /etc/profile,提示权限不够。切换root身份执行就没问题。
sudo 只负责将字符串 echo 到标准输出,而重定向是由不具备 root 权限的当前 shell 执行的。

可用 sudo 新开一个 shell 执行

代码: 全选

sudo bash -c "echo 'xxx' >> /etc/profile"
或通过 sudo 使用 tee

代码: 全选

echo "xxx" | sudo tee -a /etc/profile
参考 http://askubuntu.com/a/230500

Re: 如何在执行文件中自动实现文档的编辑?

发表于 : 2016-07-08 13:06
guistar
vickycq 写了:

代码: 全选

sudo bash -c "echo 'xxx' >> /etc/profile"
或通过 sudo 使用 tee

代码: 全选

echo "xxx" | sudo tee -a /etc/profile
参考 http://askubuntu.com/a/230500

昨晚试了,是可行的操作,谢谢你!