Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
朱莉娅和巴什——朱莉娅';s外壳模式没有';t执行~/.bash_配置文件(或~/.bashrc)_Bash_Shell_Console_Julia - Fatal编程技术网

朱莉娅和巴什——朱莉娅';s外壳模式没有';t执行~/.bash_配置文件(或~/.bashrc)

朱莉娅和巴什——朱莉娅';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 } 因此

在Julia的所有当前版本中,当您在Julia控制台中键入“;”时,shell模式不会执行放置在~/.bash_配置文件中的任何代码,而我的普通bash终端会执行它们

如果可能,我如何使Julia的shell模式执行.bash_配置文件的一部分,如果没有,它在未来的Julia版本中是否可用

我在MacOS Mojave中运行bash终端,下面是我在bash_配置文件中的代码示例:

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生成错误消息,也没有概要文件解释。