如何在 shell 脚本中使用 source 命令?

如何在 shell 脚本中使用 source 命令?

我想source在 shell 脚本中使用命令。

我所做的如下:

start.sh

source ~/tensorflow/bin/activate

然后在命令行中运行该脚本。

$sh start.sh

然而什么也没发生,

$which source

命令没有显示任何内容。

那么,source这不是正常的命令吗?

这是错误的想法吗?或者我该如何减少路径的类型?

答案1

source是一个壳内置命令。该which命令在 上查找二进制文件PATH,例如 /usr/bin、/bin、/sbin 等,但您不会在单独的二进制文件中发现任何内置命令。

此外,source在 shell 脚本中使用该命令不会导致source在运行它时传播到当前 shell。其中的sh blah.shwhere blah.shhassource实际上不会将文件内容导入交互式 shell。这不是源的工作方式。

如果您希望每次打开新 shell 时都执行 tensorflow activate 脚本的获取,则需要直接在其中编辑~/.bashrc或执行 ~/.profile source` 命令。(or other files, depending on what your shell is and how it's configured) and put the

PS - 您的问题标题非常混乱,看起来不完整。花点时间编辑、修改和清理您的帖子,否则您可能会面临被人踩的风险 :P 我自己也想这么做,但我写了答案,所以我有点偏见……

答案2

请使用以下命令:

source start.sh

当我想避免写作时,我遇到了这个问题:

source ~/.bashrc
source activate tensorflow
jupyter notebook

此后,我偶然发现了一个更好地解释这一点的页面:使用“source file.sh”,“./file.sh”,“sh file.sh”,“. ./file.sh”执行shell脚本有什么区别?在 Ask Ubuntu 上。

答案3

看来您希望激活安装了 tensorflow 的 python 虚拟环境。您可以尝试使用aliasin ~/.bashrc

添加

alias pytensorflow='source ~/tensorflow/bin/activate'

在...的末尾~/.bashrc,在...的下面

# User specific aliases and functions

pytensorflow启动 bash 会话,您只需在命令提示符下输入即可激活虚拟环境。我已经成功使用了它。

相关内容