我的变量是
LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
ORACLE_HOME=/usr/lib/oracle/11.2/client64
如何永久保存这些变量?
我的变量是
LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
ORACLE_HOME=/usr/lib/oracle/11.2/client64
如何永久保存这些变量?
Answers:
您可以将其添加到文件.profile
或登录外壳配置文件(位于主目录中)中。
要“永久”更改环境变量,您至少需要考虑以下情况:
/etc/profile
,~/.bash_profile
,~/.bash_login
,~/.profile
的顺序~/.bashrc
$BASH_ENV
$EDITOR ~/.profile
#add lines at the bottom of the file:
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
$EDITOR ~/.zprofile
#add lines at the bottom of the file:
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
$EDITOR ~/.profile
#add lines at the bottom of the file:
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
$EDITOR ~/.profile
#add lines at the bottom of the file:
LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
ORACLE_HOME=/usr/lib/oracle/11.2/client64
export LD_LIBRARY_PATH ORACLE_HOME
$EDITOR ~/.login
#add lines at the bottom of the file:
setenv LD_LIBRARY_PATH /usr/lib/oracle/11.2/client64/lib
setenv ORACLE_HOME /usr/lib/oracle/11.2/client64
如果要使它对于所有用户都是永久性的,则可以在下编辑相应的文件/etc/
,/etc/profile
例如,/etc/csh.login
对于类似Bourne的shell,对于(t)csh /etc/zsh/zprofile
和/etc/zsh/zshrc
zsh。
另一个选择是使用/etc/environment
,它在Linux系统上由PAM模块读取,pam_env
并且仅支持简单的分配,而不支持shell样式的扩展。(有关此信息,请参见Debian的指南。)
这些文件可能已经包含一些分配,因此请遵循文件中已经存在的语法。
确保重新启动外壳程序并重新登录用户,以应用更改。
如果您需要添加系统范围的环境变量,现在有一个/etc/profile.d
文件夹,其中包含用于初始化变量的sh脚本。
您可以将sh脚本和所有导出的变量放在此处。
请注意,尽管这不应用作在Debian上向env添加变量的标准方法。
.profile
在/etc/
但我不如何在其中设置变量,.profile
请告诉我
.profile
不在您的主目录中/etc/
[Admin@localhost etc]$ cat ~/.profile cat: /home/Admin/.profile: No such file or directory [Admin@localhost etc]$
:wq
是写文件,并在六退出不要忘记键入命令esc
之前
crontab
脚本中的环境变量。crontab
运行脚本时,不会在这些位置中查找任何位置。
要怎么做,如果为所有用户/壳,这取决于发行版,你可以使用/etc/environment
或/etc/profile
。/etc/profile.d
如果存在,最好在其中创建一个新文件,因为它与打包系统所做的更新冲突的可能性较小。
在中/etc/environment
,通常使用来设置变量name=value
,例如:
ORACLE_HOME=/usr/lib/oracle/11.2/client64
在中/etc/profile
,您必须使用,export
因为这是一个脚本,例如:
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
下的文件/etc/profile.d
也一样,文件也可能必须满足命名限制。在Debian上,文件必须具有扩展名.sh
(尽管它是源文件,但不需要爆炸行或可执行权限)。查看发行文档或查看/etc/profile
脚本,以了解如何加载这些文件。
还要注意,尽管LD_LIBRARY_PATH
永久设置可能会带来问题,包括安全隐患。作为替代方案,我建议LD_LIBRARY_PATH
为在运行之前需要它的每个程序找到某种在命令行开头添加前缀的方法。例如:
LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib myprog
一种方法是使用包装器脚本运行程序。您可以使用与程序相同的名称,然后将其放在程序中的位置之前/usr/local/bin
或之后的任何位置。这是一个示例脚本(请不要忘记该脚本):PATH
chmod +x
#!/bin/sh
LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib /real/location/of/myprog "$@"
environment
文件中添加了值对,是什么导致这些值对加载?例如,退出vi编辑器(更改已成功写入)后,我希望编写echo $MY_NEW_VARIABLE
并看到它打印出来-编辑:如果我启动新的命令外壳,我会看到它们在那里
/etc/environment
即使重新启动bash终端或键入,我也必须在设置此设置后重新启动操作系统source /etc/environment
。因此,如果遇到环境变量无法永久保存的问题,请尝试重新启动。
/etc/environment
不是脚本,因此无法获取。它是在登录时(以及少数其他系统事件)由PAM加载的,因此您可以注销/登录或在终端中运行新的登录会话,方法是$ su <your username here>
在该隔离的会话中获取新值。一旦退出,这些值将消失,因此完全注销/登录可能不太容易出错。
当您安装oracle时,oracle要求您在单击ok之前运行一些脚本。该脚本.bash_profile
在oracle用户主目录中放置了一个虚拟设置。要查看文件,ls -al
将显示所有隐藏文件。
键入nano bash_profile
以打开文件。对该文件进行更改以反映您的主机名和适当的sid名称。检查其他需要修改的设置。按Control x保存,然后在询问是否要保存时键入y。按返回键保存。重新启动计算机。以oracle用户身份登录。通过键入启动数据库
sqlplus / as sysdba
startup
/usr/lib/oracle/11.2/client64/lib
在/etc/ld.so.conf.d/
路径下添加一个新文件。然后,您无需设置LD_LIBRARY_PATH,另请参见此处。