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

编译打包和其他
回复
guistar
帖子: 17
注册时间: 2016-06-30 20:08

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

#1

帖子 guistar » 2016-07-07 12:17

最近在写一个简单的安装调用包,里面需要编辑profile文档,增加PATH变量

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

目前我不得不写成两个可执行文件,执行完第一个之后手动增加环境变量再执行第二个
头像
vickycq
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
联系:

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

#2

帖子 vickycq » 2016-07-07 12:26

简单追加内容 重定向 >> 或用 tee -a 即可
复杂需求 使用 ed/sed/awk 一类工具

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

代码: 全选

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

代码: 全选

echo "export AAA=ccc" >> /etc/profile
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
onlylove
论坛版主
帖子: 5214
注册时间: 2007-01-14 16:23

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

#3

帖子 onlylove » 2016-07-07 13:44

如果是一次性使用的变量,直接在脚本里面声明 export下不就完了么 :What 还是说,你这个就是要编辑profile文件?如果要增加系统变量,建议在/etc/profile.d下面新建个文件(不是说不让编辑profile,只是这样比较不容易把profile搞乱)
#include <stdio.h>
void main()
{
double world;
unsigned letter;
short stay;
long memories;
printf("I miss you.\n");
}
guistar
帖子: 17
注册时间: 2016-06-30 20:08

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

#4

帖子 guistar » 2016-07-07 14:18

vickycq 写了:简单追加内容 重定向 >> 或用 tee -a 即可

代码: 全选

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

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

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

#5

帖子 guistar » 2016-07-07 14:21

onlylove 写了:如果是一次性使用的变量,直接在脚本里面声明 export下不就完了么 :What 还是说,你这个就是要编辑profile文件?如果要增加系统变量,建议在/etc/profile.d下面新建个文件(不是说不让编辑profile,只是这样比较不容易把profile搞乱)
谢谢。我google了下profile中有个执行profile.d下文件的loop,刚刚亲自试了下确实可行。
头像
vickycq
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
联系:

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

#6

帖子 vickycq » 2016-07-07 14:33

guistar 写了: 我用root权限执行的时候系统提示我权限不够,用root身份执行时没有问题
具体说明 如何使用 root 权限执行的?

若需使用 sudo:

代码: 全选

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

代码: 全选

sudo bash -c "echo 'export AAA=ccc' >> /etc/profile"
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
guistar
帖子: 17
注册时间: 2016-06-30 20:08

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

#7

帖子 guistar » 2016-07-07 15: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"

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

代码: 全选

sudo bash -c "echo 'export AAA=ccc' >> /etc/profile"
这个代码我今晚试试对比一下。目前电脑在跑这个
头像
vickycq
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
联系:

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

#8

帖子 vickycq » 2016-07-07 15:51

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
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
guistar
帖子: 17
注册时间: 2016-06-30 20:08

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

#9

帖子 guistar » 2016-07-08 13:06

vickycq 写了:

代码: 全选

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

代码: 全选

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

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