我正在尝试运行一个简单的shell脚本来自动更改docker-machine环境。问题是,当我直接在Mac终端中运行以下命令时,输出以下内容:
#!/usr/bin/env bash
eval $(docker-machine env default)
所以基本上你会期望,但是当我运行以下.sh脚本时:
./run.sh
docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default digitalocean Running tcp://***.**.***.***:**** v1.12.0
输出结果为:
#ifndef MAP_H
#define MAP_H
#include "Sprite.h"
#include <SFML/Graphics.hpp>
#include <iostream>
class Map : public sprite
{
private:
char mapname[50];
int columnnumber;
int linenumber;
char casestatematricia[];
public:
void setmapname(char newmapname[50]);
void battlespace(int column, int line);
void setcasevalue(int col, int line, char value);
void printcasematricia();
};
#endif
所以基本上,它没有将其设置为活动状态,我无法访问它。
之前是否有人遇到此问题并知道如何解决?对我来说似乎很奇怪,除了这个方面之外,还有其他一切都在运行和自动化。
干杯,亚伦
答案 0 :(得分:4)
我认为您需要获取shell脚本
source ./myscript.sh
当eval中的导出返回到进程时,您开始运行shell然后被处理掉。这些需要转到父母,例如登录shell
考虑a.sh
#!/bin/bash
eval $(echo 'export a=123')
export b=234
以两种方式运行
$ ./a.sh
$ echo $a
$ echo $b
$ source a.sh
$ echo $a
123
$ echo $b
234
$