加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 如何定义shell脚本变量以使脚本位于脚本之外

发布时间:2020-12-15 17:04:05 所属栏目:安全 来源:网络整理
导读:我正在使用Ubuntu Natty. 我有一个shell脚本,我已保存到/etc/init.d/qstart. shell脚本包含以下内容: apt-get -y updateapt-get -y upgradeapt-get -y install tofrodos gcc make nmap lsof expect sysstatdbpass="mydbpassword" 但是,在我执行脚本之后,我
我正在使用Ubuntu Natty.

我有一个shell脚本,我已保存到/etc/init.d/qstart. shell脚本包含以下内容:

apt-get -y update
apt-get -y upgrade
apt-get -y install tofrodos gcc make nmap lsof expect sysstat
dbpass="mydbpassword"

但是,在我执行脚本之后,我想测试dbpass是否已设置,并在提示符中输入echo $dbpass.但它是空的.

如何在我的shell脚本中定义一个变量,以便我可以在它之外访问它?!

提前致谢.

您无法在父进程的环境中设置变量.您只能设置当前流程的环境或为流程的子项准备环境.

也就是说,您可以指示shell在当前shell进程中从脚本运行命令,而不是分支新shell.你可以这样做:

source your_script.sh

要么

. your_script.sh

(注意点后面的空格).由于your_script.sh中的命令由当前shell运行,因此将保留对脚本内部环境所做的更改.

但是,如果运行脚本的shell不是您希望使用环境变量的shell的祖先,那么根本无法使用环境变量实现目标.例如,如果脚本在初始化时由某些无子shell运行,则所有环境设置都会完全丢失.在这种情况下,使用一些其他机制,如文件(可能在/ var下).

如果希望给定shell的所有实例都在其环境中设置某些变量,则可以使用大多数shell使用的初始化脚本.通常,它们具有系统范围和每用户初始化脚本.例如,bash使用/ etc / profile作为交互式登录shell的系统范围初始化脚本,并使用$HOME / .bash_profile(也是$HOME / .bash_login和$HOME / .profile)作为每用户初始化脚本.有关特定于bash的详细信息,请参阅this reference.如果您使用其他外壳,请尝试相应的手册.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读