多年来,我收集了shell和脚本引用的bash函数库。为了减少导入样板,我正在探索如何在脚本中合理地包含库的选项。
我的解决方案有两个部分-首先是导入配置(env ),然后是函数库。
~/bash_envs:(配置)
export SOME_VAR=VALUE
export SHELL_LIB=/path/to/library.sh
# convenience funtion, so scripts who source env_vars file (ie this file) can
# simply call it, instead of including the same block
在bash脚本的顶部,我有以下内容:
if [[ "$npm_registry_override" != "yes" ]]; then
echo "refusing to source npm.sh script because env is not set."
exit 0;
fi
问题是,当我源它并且没有设置env var时,我的终端窗口就会关闭。
如果我这样做了:
if [[ "$npm_registry_override" != "yes" ]]; then
echo "ref
我正在创建一个docker容器,它有一个带有一些包(pip和conda)的miniconda环境设置。Dockerfile:
# Use an official Miniconda runtime as a parent image
FROM continuumio/miniconda3
# Create the conda environment.
# RUN conda create -n dev_env Python=3.6
RUN conda update conda -y \
&& conda create -y -n dev_env Python=3.6
我必须激活虚拟环境(venv),所以我在终端中手动运行以下命令: source .venv/bin/activate # To activate the virtual env. 和 deactivate # To deactivate the virtual env 这在手动运行时工作得很好。现在,我必须将这些命令插入到bash脚本中,以使AWS CodeDeploy能够将其部署到Ubuntu18.04服务器上。 我的名为after_install.sh的bash脚本如下所示... #!/usr/bin/env bash
set -e
sou
今天,我编写了一个bash脚本来打开和关闭一个特殊的python虚拟环境。要关闭虚拟环境,必须在相同的bash进程中命令禁用,因此可以使用命令~source~来执行bash脚本。
Perl问题
这是我的perl脚本
#!/usr/bin/perl
BEGIN{
$\="";
}
use warnings;
use strict;
use feature "switch";
use Cwd qw(chdir cwd);
no warnings "experimental::smartmatch";
our $path = $ENV{
我们有一个名为source.sh的shell脚本,它可以导出构建所需的许多ENV变量。
我试图通过在脚本中运行source.sh来访问这些ENV变量,但即使在运行之后,我也无法访问后续命令的ENV变量。
我的脚本看起来很像:
#!/bin/bash
sh source.sh
cd $ROOT_VOS
make
但是这里的cd $ROOT_VOSis没有发生
我是shell脚本的初学者。我正试图用脚本打开4终端。这是密码
for i in 1 2 3 4
do
echo $i
if [ $i -eq 1 ]; then
# xterm -e
xterm -e "source /home/akshay/openapps.sh; bash"
opensublime
elif [ $i -eq 2 ]; then
xterm -e "source /home/akshay/openapps.sh; bash"
open
我有一个用命令继承的shell脚本
#!/usr/bin/env bash
set -eux
我希望在必须一致运行的各种shell脚本之间开始共享变量,所以我通常使用这个命令在.env中导出变量
set -a
source .env
set +a
是将以下内容组合在一起的适当语法:
set -euxa
source .env
set +a
我有以下bash脚本(名为"env.bash")要由源命令使用:
#!/bin/bash
FOO=/some/path
然后我有以下bash脚本(名为"compile.bash"):
#!/bin/bash
if [ -z "$FOO" ]; then
echo "Need to set FOO, did you forget to source env.bash?"
exit 1
fi
./compile-something
但是,如果我这样做了:
source env.bash
./compile.bash