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

变量在?/ .bashrc中设置并在shellscript中访问它们

发布时间:2020-12-15 22:08:28 所属栏目:安全 来源:网络整理
导读:在返回非交互式 shell之前,我在.bashrc的顶部有这个 FOO="BAR"; export FOOecho "HELLO WORLD"# If not running interactively,don't do anything[ -z "$PS1" ] return 我在我的homedirectory中有一个脚本test.sh: #!/bin/bashecho "A"echo $FOOecho "B" 我
在返回非交互式 shell之前,我在.bashrc的顶部有这个

FOO="BAR"; export FOO
echo "HELLO WORLD"

# If not running interactively,don't do anything
[ -z "$PS1" ] && return

我在我的homedirectory中有一个脚本test.sh:

#!/bin/bash
echo "A"
echo $FOO
echo "B"

我执行test.sh.输出:

A

B

2个问题:

>为什么我看不到$FOO的价值?
>为什么我看不到“你好世界”?

编辑:我认为#!/ bin / bash的脚本会触发一个子shell,它会再次调用.bashrc,我错了吗?

编辑:即使我从其他主机调用脚本,我也看不到任何值.即使这样,.bashrc也会执行???

ssh remotehost "/home/username/test.sh"

解决方法

.bashrc仅为非登录交互式shell自动获取.通常,你会放. .bashrc靠近.bash_login文件的开头,以确保.bashrc来源于登录和非登录交互式shell.

.bashrc不会自动为非交互式shell提供源代码,例如在执行shell脚本时启动的shell.

由于您从.bashrc导出FOO,因此test.sh看到FOO具有空值的事实告诉我您正在从登录shell运行脚本.从提示打印BAR回显$FOO?如果确实如此,我会感到惊讶,而test.sh却没有.

(编辑:李大同)

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

    推荐文章
      热点阅读