我想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.sh
where blah.sh
hassource
实际上不会将文件内容导入交互式 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 虚拟环境。您可以尝试使用alias
in ~/.bashrc
。
添加
alias pytensorflow='source ~/tensorflow/bin/activate'
在...的末尾~/.bashrc
,在...的下面
# User specific aliases and functions
pytensorflow
启动 bash 会话,您只需在命令提示符下输入即可激活虚拟环境。我已经成功使用了它。