朱莉娅和巴什——朱莉娅';s外壳模式没有';t执行~/.bash_配置文件(或~/.bashrc)
在Julia的所有当前版本中,当您在Julia控制台中键入“;”时,shell模式不会执行放置在~/.bash_配置文件中的任何代码,而我的普通bash终端会执行它们 如果可能,我如何使Julia的shell模式执行.bash_配置文件的一部分,如果没有,它在未来的Julia版本中是否可用 我在MacOS Mojave中运行bash终端,下面是我在bash_配置文件中的代码示例:朱莉娅和巴什——朱莉娅';s外壳模式没有';t执行~/.bash_配置文件(或~/.bashrc),bash,shell,console,julia,Bash,Shell,Console,Julia,在Julia的所有当前版本中,当您在Julia控制台中键入“;”时,shell模式不会执行放置在~/.bash_配置文件中的任何代码,而我的普通bash终端会执行它们 如果可能,我如何使Julia的shell模式执行.bash_配置文件的一部分,如果没有,它在未来的Julia版本中是否可用 我在MacOS Mojave中运行bash终端,下面是我在bash_配置文件中的代码示例: alias ls='ls -GFh' function d() { cd "$@" ls } 因此
alias ls='ls -GFh'
function d() {
cd "$@"
ls
}
因此,我可以在我的普通终端中使用“d”,但不能在Julia的shell模式中使用它。
。只有当bash作为登录shell启动时,bash\u profile
才准备就绪(例如,使用--login
CLI选项)。显然,Julia以普通(非登录)shell启动bash,在这种情况下,bash将只读取.bashrc
文件
为了使事情相对简单,您可能应该将希望始终执行的代码移动到.bashrc
中,然后从.bash\u profile
中选择源.bashrc
,如下所示:
[-r~/.bashrc]&&source~/.bashrc
使用.bashrc
而不是.bash\u profile
很有可能是正确的做法。@MichaWiedenmann我不认为这是问题所在,我按照KMZ在回答中说的做了,我还尝试将.bash\u profile
中的所有内容移动到我的.bashrc
中,并删除第一个,它仍然不起作用。(适用于普通bash模式,但不适用于Julia的shell)谢谢你的回答,我按照你的建议做了,我的bash仍然执行我想要的命令,但是,它似乎在Julia的shell中不起作用,因为我仍然得到:/usr/local/bin/bash:d:未在其中找到命令
。所以我不能选择你的answer@J.Khamphousone:您能否提供您的.bashrc
?如有必要,请在发布之前删除所有敏感位。…。@J.Khamphousone:好的,因此如果shell似乎没有使用.bashrc
,这是因为以下两个原因之一:要么Julia没有真正执行bash,要么发生了一些奇怪的事情(例如bash是在sh
兼容模式下启动的)。让我们一起来解决这个问题@J.Khamphousone:要了解发生了什么,请从Julia转到shell模式并执行以下操作:-运行ps-u$USER
,以确保Julia确实启动bash
,而不是sh
;-检查以下环境变量:$SHELL
,$-
,$PS1
,$BASH_env
——这些变量将为我们提供有关BASH启动模式的更多信息;-通过运行env
和set
检查您的环境。函数d()可能不会传递给子shell,您可以使用export-f d dE dM2
@J.Khamphousone解决这个问题:我现在无法测试实际的MacOS语法,但我的想法是为您的用户显示一个进程树,这样我们就可以真正看到实际的bash是由Julia以交互方式启动的,还是Julia“伪造的”shell,并且只将输入的命令传递给一次性forked bash。到目前为止,情况似乎是后者:没有可用的典型bash变量,Julia生成错误消息,也没有概要文件解释。