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

发布于 2021-01-29 19:08:30

在返回非交互shell之前,我在.bashrc的最顶部有这个

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

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

我的主目录中有一个脚本test.sh与此:

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

我执行test.sh。输出:

A

B

2个问题:

为什么我看不到$ FOO的值?
为什么我看不到“ HELLO WORLD”?
编辑:我认为带有#!/ bin / bash的脚本会触发一个子外壳,它将再次调用.bashrc,我错了吗?

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

ssh remotehost "/home/username/test.sh"
关注者
0
被浏览
50
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    .bashrc仅自动为非登录交互式外壳提供。通常,您会将文件放在. .bashrc开头附近.bash_login,以确保该文件.bashrc来自登录和非登录交互式外壳程序。

    .bashrc 不会自动为非交互式外壳(例如在执行外壳脚本时启动的外壳)提供源。

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看