当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 11 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [问题]export 不能单独写个脚本么
帖子发表于 : 2008-06-18 9:18 

注册: 2008-06-18 9:14
帖子: 26
送出感谢: 0 次
接收感谢: 0 次
我要声明export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
但是不想写入bashrc或bashprofile里,单独写个文件
#!/bin/bash
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
但不好用,希望各位指点一下


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-06-18 10:03 
头像

注册: 2007-10-19 14:51
帖子: 4953
地址: 深圳
送出感谢: 0 次
接收感谢: 2
什么叫不好用?你想让它怎么样好用?和 .bashrc一样随着登录,运行?


_________________
Nothing 有事请发邮件到 yms541 AT gmail.com
alias 爱慕颇雷尔='mplayer'


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-06-18 10:14 

注册: 2008-06-18 9:14
帖子: 26
送出感谢: 0 次
接收感谢: 0 次
是这样的,我生成了个动态库,放在了当前目录,每次程序执行的时候我都要打export 那句话,我想放进个脚本里面,但我写那个是不好用的,我很不明白,在终端里直接打那句话程序就可以执行,但放到我写那个脚本就提示照不到当前目录的库,所以想请教一下问题出在哪里怎么解决


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-06-18 10:19 
头像

注册: 2007-10-19 14:51
帖子: 4953
地址: 深圳
送出感谢: 0 次
接收感谢: 2
wxkj20 写道:
是这样的,我生成了个动态库,放在了当前目录,每次程序执行的时候我都要打export 那句话,我想放进个脚本里面,但我写那个是不好用的,我很不明白,在终端里直接打那句话程序就可以执行,但放到我写那个脚本就提示照不到当前目录的库,所以想请教一下问题出在哪里怎么解决
你要好好理解一下 linux shell 里 环境变量的作用范围。 你把这个export 语句 写进一个脚本,执行时的确是有用的,但是它的作用范围是 这个脚本的 范围之内(当前shell的一个子shell)和这个脚本的 "当前shell的子shell的子shell" ,而不会影响到你的登录 shell(当前shell)..呵呵,我也感觉说的像绕口令。不知道你能不能懂。

你想让这个脚本影响到你的当前登录shell,就必须将它加入 到 .bashrc 中。或者在 .bashrc中调用。

看看鸟哥的解释。呵呵
代码:
變數的有效範圍
蝦密??變數也有使用的『範圍』?沒錯啊~我們在上頭的 export 指令說明中,就提到了這個概念了。如果在跑程式的時候,有父程序與子程序的不同程序關係時, 則『變數』可否被引用是 export 有關。被 export 後的變數,我們可以稱他為『環境變數』! 環境變數可以被子程序所引用,但是其他的自訂變數內容就不會存在於子程序中。也就是說: 我們自行設定的變數,只在目前這個 shell 環境當中存在, 在子程序中將不會存在此一變數。除非使用 export 將自訂變數變成環境變數。

其實除了 shell 的父、子程序外,在腳本( scripts )的編寫當中,由於有的軟體會使用到 2 個以上的 scripts 做為一個完整的套件!也就是說,假如你有兩支程式,一支為 scripts1.sh 以及 scripts2.sh ,而 scripts2.sh 會去引用 scripts1.sh 的變數,這個時候,嘿嘿!你在 scripts1.sh 當中設定的變數請『千萬記得以 export 設定』, 否則你的變數將無法在兩個 scripts 之間互相被引用喔!當這個 scripts 執行完畢之後,剛剛在 scripts 當中設定的變數也就『失效了!』。

其實,要瞭解不同程序之間變數的變換,應該要先瞭解『程序』的概念比較好, 但是我們還沒有講到.....沒關係~等你念到程序章節後,還可以再回來好好的看一看。 基本上,環境變數可以讓子程序繼續引用的原因,是因為:

    * 當啟動一個 shell ,作業系統分配一記憶區塊給 shell 使用,此區域之變數可以讓子程序存取;
    * 利用 export 功能,可以讓變數的內容寫到上述的記憶區塊當中(環境變數);
    * 當載入另一個 shell 時 (亦即啟動子程序,而離開原本的父程序了),子 shell 可以將父 shell 的環境變數所在的記憶區塊導入自己的環境變數區塊當中。

透過這樣的關係,我們就可以讓某些變數可以在相關的程序之間存在,以幫助自己更方便的操作環境喔!


_________________
Nothing 有事请发邮件到 yms541 AT gmail.com
alias 爱慕颇雷尔='mplayer'


最后由 yaoms 编辑于 2008-06-18 10:28,总共编辑了 1 次

页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-06-18 10:26 

注册: 2008-06-18 9:14
帖子: 26
送出感谢: 0 次
接收感谢: 0 次
我明白你的意思,我现在想做的就是想让脚本在在当前有效,每次执行程序前我先执行脚本,不打export那么长的语句。不用每次开机后就生效,但是我的脚本执行了没效果,不能起到在当前终端打export那句话的作用,我不明白毛病出在哪里


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2008-06-18 10:30 
头像

注册: 2007-10-19 14:51
帖子: 4953
地址: 深圳
送出感谢: 0 次
接收感谢: 2
你要在 .bashrc中添加这样一句 :

代码:
. /path/to/your/script


让 .bashrc 调用 你的变量设置脚本。


_________________
Nothing 有事请发邮件到 yms541 AT gmail.com
alias 爱慕颇雷尔='mplayer'


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2008-06-18 10:38 

注册: 2008-06-18 9:14
帖子: 26
送出感谢: 0 次
接收感谢: 0 次
谢谢


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2008-06-18 10:40 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
要source呢。man吧。


_________________
● 鸣学


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2008-06-18 11:28 

注册: 2006-01-06 22:55
帖子: 556
送出感谢: 0 次
接收感谢: 0 次
在脚本里运行程序应该就可以了,
export的作用范围只在脚本以及它的子进程内。


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2008-06-18 11:30 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
LD_LIBRARY_PATH 加上当前路径是个危险行为


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
11 楼 
 文章标题 : Re: [问题]export 不能单独写个脚本么
帖子发表于 : 2009-05-17 21:07 

注册: 2008-07-15 13:01
帖子: 108
送出感谢: 0 次
接收感谢: 0 次
似懂非懂....


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 11 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译