LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: liuzx_linux

shell脚本为什么不执行export命令?

[复制链接]
发表于 2007-1-17 17:46:12 | 显示全部楼层
可以到/etc下找找
gentoo是在/etc/bash/bashrc
fc是在/etc/bashrc
各个发行版可能会有些差异,不过/root/.bashrc不一定会有的,如果没有你可以自己创建
.profile也是同样的道理。
回复 支持 反对

使用道具 举报

发表于 2007-1-18 10:31:42 | 显示全部楼层
Post by dyq2008
可我的linux没有这个文件,profile也没有


没有的话, 自己建一个便是(如果是bash的话, .bash_profile, .bash_login, .profile 都行)
回复 支持 反对

使用道具 举报

发表于 2007-1-18 21:15:28 | 显示全部楼层
有建过,但发现没运行,就把它删了
现在我把export和要执行的程序放在一个脚本里执行
回复 支持 反对

使用道具 举报

发表于 2007-1-19 10:21:35 | 显示全部楼层
假设你的脚本文件名字为 export.sh .

source export.sh 相当于运行. export.sh(点号表示读取文件中的命令在当前进程执行。

如果你直接执行export.sh 或者运行 bash export.sh, 就相当于重新开启一个子进程, 子进程中设定的环境变量不会影响到父进程(export.sh退出的时候你设置的变量就销毁了), 相当于程序中方法/函数里面的局部变量不会作用到主程序(局部变量的作用域问题)。

解决的方法是用source或者.来执行文件, 或者把你要运行的export命令放到/etc/profile 或者~/.profile (其他地方如~/.bash_rc应当也可以) 中。

不知道这样讲是不是清楚了。

____________________________________
working with effective linux:
http://effectivelinux.blogspot.com

手机搜索:
http://www.roboo.com
回复 支持 反对

使用道具 举报

发表于 2007-1-19 10:41:53 | 显示全部楼层
very clear
回复 支持 反对

使用道具 举报

发表于 2007-1-23 10:08:17 | 显示全部楼层
多谢euler,现在清楚了
之前我的profile没有运行
但我把inittab文件中原来的::askfirst:/bin/sh改为::askfirst:-/bin/sh就可以运行了
不知道是为什么?
回复 支持 反对

使用道具 举报

发表于 2011-3-16 13:45:07 | 显示全部楼层
very clear
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表