分页: 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下不就完了么

还是说,你这个就是要编辑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下不就完了么

还是说,你这个就是要编辑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