如何解决shell执行派生子shell问题
2017-11-28 11:08
197 查看
笔者今天写了一个shell script,希望简化登录代理服务器的问题,可是script写好之后,却发现没有按照预想的情况下得到环境变量。
为了让大家好理解,贴出script的内容给各位参阅:
于是乎一顿百度,结果发现类似的帖子也有,但帖子上也没有找到答案(帖子的问法是export如何在当前console生效),
http://bbs.chinaunix.net/thread-3777848-1-1.html
然后联系了一位开源界的前辈(我也不知道对方是否愿意我透露他的大名,在此暂时不透露),并得到对方热情指点,解决方法极其简单,
为了让大家好理解,贴出script的内容给各位参阅:
vim proxy_http.sh加入如下配置:
#!/bin/bash default_domain=cmdschool default_username=will read -p "Please enter you domain(default value is cmdschool): " domain read -p "Please enter your username(default value is will): " username read -s -p "Please enter your password: " password if [ domain=="" ]; then domain=$default_domain fi if [ username=="" ]; then username=$default_username fi export http_proxy="http://$domain\\$username:$password@10.168.2.147:8080" export https_proxy="http://$domain\\$username:$password@10.168.2.147:8080"按照平时的执行方法,我们通常是:
chmod 770 proxy_http.sh ./proxy_http.sh等同于以下执行效果
sh ./proxy_http.sh等同于以下执行效果
bash ./proxy_http.sh然后你检查环境变量,
echo $http_proxy echo $https_proxy结果发现输出的都是空值,
于是乎一顿百度,结果发现类似的帖子也有,但帖子上也没有找到答案(帖子的问法是export如何在当前console生效),
http://bbs.chinaunix.net/thread-3777848-1-1.html
然后联系了一位开源界的前辈(我也不知道对方是否愿意我透露他的大名,在此暂时不透露),并得到对方热情指点,解决方法极其简单,
source proxy_http.sh所以,source指令和sh(bash)指令的区别显而易见,就是一个不会派生子shell和一个会派生子shell,我们平时使用source来导入环境变量,但却没有注意到source其实他的本质是用来执行脚本。O(∩_∩)O哈哈~。
相关文章推荐
- 通过脚本案例学习shell(一)如何通过复杂锁脚本解决脚本正在运行或者被意外中断问题 推荐
- ASP.NET如何解决页面之间传输中文乱码的问题
- 如何解决复杂条件下的程序流的控制问题?
- 如何解决页面之间传输中文乱码的问题
- Weblogic Server中如何解决中文显示乱码问题
- 如何自行解决Oracle的技术问题?
- Oracle诊断案例---如何诊断和解决CPU高度消耗(100%)的数据库问题
- 关于如何解决C++ Builder中DBLookupComboBox不能输入的问题:
- 事务死锁的问题如何解决?
- 如何解决一个小问题:当前不会命中断点
- 如何解决ASP.NET中中文不能正常显示问题?
- ASP.NET如何解决页面之间传输中文乱码的问题
- 如何应对论坛、网上查找资料解决问题低效?
- J2EE - 如何在JBoss中解决自动增长键值问题
- 如何解决 SQL Server 2000 中的连接问题
- 如何解决visual interdev的调试问题
- 如何解决页面之间传输中文乱码的问题
- 朋友的一个问题:Linux开机如何自动运行自己编写好的shell脚本
- 如何解决access 中 SELECT TOP 1语句竟然返回多条记录的问题?