分页: 1 / 1
[问题]export 不能单独写个脚本么
发表于 : 2008-06-18 9:18
由 wxkj20
我要声明export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
但是不想写入bashrc或bashprofile里,单独写个文件
#!/bin/bash
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
但不好用,希望各位指点一下
发表于 : 2008-06-18 10:03
由 yaoms
什么叫不好用?你想让它怎么样好用?和 .bashrc一样随着登录,运行?
发表于 : 2008-06-18 10:14
由 wxkj20
是这样的,我生成了个动态库,放在了当前目录,每次程序执行的时候我都要打export 那句话,我想放进个脚本里面,但我写那个是不好用的,我很不明白,在终端里直接打那句话程序就可以执行,但放到我写那个脚本就提示照不到当前目录的库,所以想请教一下问题出在哪里怎么解决
发表于 : 2008-06-18 10:19
由 yaoms
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 的環境變數所在的記憶區塊導入自己的環境變數區塊當中。
透過這樣的關係,我們就可以讓某些變數可以在相關的程序之間存在,以幫助自己更方便的操作環境喔!
发表于 : 2008-06-18 10:26
由 wxkj20
我明白你的意思,我现在想做的就是想让脚本在在当前有效,每次执行程序前我先执行脚本,不打export那么长的语句。不用每次开机后就生效,但是我的脚本执行了没效果,不能起到在当前终端打export那句话的作用,我不明白毛病出在哪里
发表于 : 2008-06-18 10:30
由 yaoms
你要在 .bashrc中添加这样一句 :
代码: 全选
. /path/to/your/script
让 .bashrc 调用 你的变量设置脚本。
发表于 : 2008-06-18 10:38
由 wxkj20
谢谢
发表于 : 2008-06-18 10:40
由 eexpress
要source呢。man吧。
发表于 : 2008-06-18 11:28
由 fuhuizn
在脚本里运行程序应该就可以了,
export的作用范围只在脚本以及它的子进程内。
发表于 : 2008-06-18 11:30
由 BigSnake.NET
LD_LIBRARY_PATH 加上当前路径是个危险行为
Re: [问题]export 不能单独写个脚本么
发表于 : 2009-05-17 21:07
由 nitingjimo
似懂非懂....