当前位置: 首页 > 面试题库 >

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

蒋鸿文
2023-03-14
问题内容

在返回非交互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"

问题答案:

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

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

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



 类似资料:
  • 是否可以访问模板中的设置变量? 设置: 如何使用,而不在模板中重用,以避免重复的代码,尤其是在其层次结构较深的情况下?

  • 问题内容: 在后台代码中,我设置了一些数据。 问题是如何在javascript中获取会话值(在我的示例中为“示例数据”)并设置一个新值? 问题答案: 使用Java脚本访问和分配会话变量: 使用Javascript分配ASP.NET会话变量: 使用Javascript访问ASP.NET Session变量:

  • 本文向大家介绍Python中设置变量访问权限的方法,包括了Python中设置变量访问权限的方法的使用技巧和注意事项,需要的朋友参考一下 在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。 但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的name、score属性: 如果要让内部属性不被外部访问,可以把属性

  • 问题内容: 这是我第一次使用SQLServer 2012,并且我收到的这段代码不起作用: 这段代码有问题: 我有以下三个错误: 问题答案: 您需要替换为,它将起作用 所以这 需要替换为

  • 问题内容: 我正在使用Docker和Docker-compose构建一堆nginx + php。 我试图在我的文件中设置时区,并在Dockerfile中使用它,但是我可能会误解文档中的内容。 .env docker-compose.yml php7-fpm / Dockerfile 容器内部的时区设置不正确(在php容器bash中运行)。如果我在Dockerfile中手动编写区域,那么它将起作用。

  • 问题内容: 假设我有一个普通的SQL过程,其中包含一些参数。 在调试过程中,如果我可以为这些参数分配一些值,这样我就可以突出显示proc的主体并执行它(而不是用值手动替换变量),那将是一个很好的选择。 有什么办法吗?我试过了: 但这不喜欢吗? 问题答案: 尝试 好像您缺少了clarify语句。如果它不喜欢‘2012-03-23’部分,则可能必须强制转换。