gpt4 book ai didi

macos - Mac 上 .bash_profile 的奇怪行为

转载 作者:行者123 更新时间:2023-12-04 18:52:50 26 4
gpt4 key购买 nike

关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。












我们不允许在 Stack Overflow 上提出有关通用计算硬件和软件的问题。您可以编辑问题,使其成为 on-topic对于堆栈溢出。


8年前关闭。







Improve this question




问题描述

设想

我昨晚更新了我的 mac 和 ubuntu 服务器。 “.bash_profile”和其他类似文件发生了一些奇怪的事情。

改变

苹果电脑

在 mac 上,我注意到两个变化:

1.这些文件的文件权限已从744更改为644,因此我无法直接执行它们。如果我确实改回 744 并执行它们,我会收到如下错误:

$ -bash(3663,0x7fff79abd310) malloc: *** error for object 0x7fb753d06160: pointer being     freed was not allocated
$ *** set a breakpoint in malloc_error_break to debug
$ Abort trap: 6

2.当我使用 bash带文件的命令(644)
$ bash .bash_profile

它将部分工作,打印任何 echo文件中的命令,但 alias文件中的命令将不起作用。

并且只有带有文件的源命令(644)
$ source .bash_profile

对两者都有效 echoalias命令。

正如我猜想 alias 中的一些文件权限问题在哪里。 , 我用:
$ sudo bash .bash_profile

这也行不通。

并且登录将同时工作 echoalias .

Ubuntu

第二次更改发生在我的 ubuntu 服务器上,但不是第一次更改。

问题
  • 有人对此有任何想法吗?为什么 echo 有效但 alias 无效?
  • 我想这是一个新的更新。由于我是管理员领域的新手,我想知道我在哪里可以获得这种信息通知。

  • 多谢!

    最佳答案

    当您执行 bash 脚本时,该脚本在一个新的子 shell 中运行,该子 shell 在脚本退出时终止。所以你的别名命令只影响那个子shell,而不是你执行脚本的外壳。但是,子shell 仍然连接到与外壳程序相同的终端,这就是为什么您仍然可以看到 echo 命令的输出的原因。

    当您获取 bash 脚本时,不会生成子 shell。相反,脚本中的命令会一一执行,就像您输入它们一样。因此,别名命令在您获取 .bash_profile 的同一 shell 中被调用,并且别名在该 shell 中可用。

    关于macos - Mac 上 .bash_profile 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20647709/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com