Macos Mac上.bash_配置文件上的奇怪行为 问题描述 脚本

Macos Mac上.bash_配置文件上的奇怪行为 问题描述 脚本,macos,bash,ubuntu,Macos,Bash,Ubuntu,我昨晚更新了我的mac和ubuntu服务器。在.bash_配置文件和其他类似文件上发生了一些奇怪的事情 改变 雨衣 在mac上,我注意到两个变化: 1.这些文件的文件权限已从744更改为644,因此我无法直接执行这些文件。如果我改回744并执行它们,我会得到如下错误: $ -bash(3663,0x7fff79abd310) malloc: *** error for object 0x7fb753d06160: pointer being freed was not allocated

我昨晚更新了我的mac和ubuntu服务器。在.bash_配置文件和其他类似文件上发生了一些奇怪的事情

改变 雨衣 在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.当我对file644使用bash命令时

$ bash .bash_profile
$ source .bash_profile
它将部分工作,打印文件中的任何echo命令,但文件中的alias命令将不工作

并且仅包含file644的源命令

$ bash .bash_profile
$ source .bash_profile
适用于echo和alias命令

正如我想alias中的某些文件权限问题,我使用:

这也行不通

登录到将同时使用echo和alias

Ubuntu 第二个变化发生在我的ubuntu服务器上,但不是第一个变化

问题 有人知道吗?为什么echo工作而alias不工作

我想这是一个新的更新。由于我是管理员领域的新手,我想知道在哪里可以得到这种信息通知


太多了

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


当您生成bash脚本时,不会生成子shell。相反,脚本中的命令会一个接一个地执行,就像您输入了命令一样。因此,别名命令将在源.bash_配置文件所在的同一个shell中调用,并且别名将在该shell中可用。

bash配置文件不应该执行,而是应该源到当前shell中。因此,它不需要执行权限。“但这是个奇怪的错误。”格伦尼查克曼我想你是对的。然而,我过去经常这样做,而且效果很好。我不知道现在有什么不同。贾斯汀想知道.Thx,但我记得alias以前在使用时工作过。有什么解释吗?有没有可能你在想。而不是。/。是源的同义词