当我使用sudo的任何命令时,环境变量不存在.例如,在设置HTTP_PROXY之后,该命令wget
可以正常工作sudo
.但是,如果我键入sudo wget
它说它无法绕过代理设置.
在bash上的Linux(Ubuntu 11.04)上,是否可以临时设置一个环境变量,该变量在脚本持续时间内只与普通变量不同?例如,在shell脚本中,通过临时将HOME设置为当前工作目录中的文件夹,然后启动应用程序,使应用程序保存到HOME便携式.
我一次又一次地看到Bash在Stack Overflow上使用eval
的答案,并且答案得到了抨击,双关语是为了使用这种"邪恶"结构.为什么eval
这么邪恶?
如果eval
不能安全使用,我应该使用什么呢?
我使用以下sed
命令替换配置文件中的一些参数:
sed -i 's/^option.*/option=value/g' /etc/fdm_monitor.conf
Run Code Online (Sandbox Code Playgroud)
现在我有一个问题.如果该行不存在,我想将其添加到文件的底部.
我用popen
一个C程序来调用它.我试过用awk
.
我试图通过命令调用带有修改环境的shell命令env
.
根据手册
env HELLO='Hello World' echo $HELLO
Run Code Online (Sandbox Code Playgroud)
应该回声Hello World
,但事实并非如此.如果我做
HELLO='Hello World' bash -c 'echo $HELLO'
Run Code Online (Sandbox Code Playgroud)
它Hello World
按预期打印(感谢此信息的答案).
我在这里错过了什么?
干杯,尼克拉斯
我使用python-behave进行BDD测试,我必须从命令行传递一个URL(例如www.abc.com).
$behave -u "www.abc.com"
Run Code Online (Sandbox Code Playgroud)
为了实现这一点,我已阅读了行为文档,但没有足够的材料以及为设置behave.ini文件而给出的解释.我也不确定behave.ini文件如何帮助我传递参数.
有人可以告诉我如何设置命令行参数的行为?
在启动服务器之前,我需要导出('设置'实际,我使用的是Win7)NODE_PATH变量.我尝试使用此命令(即使在命令行中也不工作):
set NODE_PATH=./ && node server.js
Run Code Online (Sandbox Code Playgroud)
并为package.json:
"scripts": {
"start": "set NODE_PATH=. && node server.js"
},
Run Code Online (Sandbox Code Playgroud)
但它不起作用.我得到的Error: Cannot find module
只有NODE_PATH
未指定才出现.
那么,这个问题怎么解决?我需要一种正确的方法来NODE_PATH
使用内联命令导出和运行服务器,或者为"启动"脚本指定两个单独的命令.
我正在用Python开发一个使用Tensorflow的应用程序和另一个带有GPU的模型。我有一台拥有很多GPU(3xNVIDIA GTX1080)的PC,由于所有模型都尝试使用所有可用的GPU,从而导致OUT_OF_MEMORY_ERROR,我发现可以使用以下命令为Python脚本分配特定的GPU:
os.environ['CUDA_VISIBLE_DEVICES'] = '1'
Run Code Online (Sandbox Code Playgroud)
在这里,我附上我的FCN课程的摘要
class FCN:
def __init__(self):
os.environ['CUDA_VISIBLE_DEVICES'] = '1'
self.keep_probability = tf.placeholder(tf.float32, name="keep_probabilty")
self.image = tf.placeholder(tf.float32, shape=[None, IMAGE_SIZE, IMAGE_SIZE, 3], name="input_image")
self.annotation = tf.placeholder(tf.int32, shape=[None, IMAGE_SIZE, IMAGE_SIZE, 1], name="annotation")
self.pred_annotation, logits = inference(self.image, self.keep_probability)
tf.summary.image("input_image", self.image, max_outputs=2)
tf.summary.image("ground_truth", tf.cast(self.annotation, tf.uint8), max_outputs=2)
tf.summary.image("pred_annotation", tf.cast(self.pred_annotation, tf.uint8), max_outputs=2)
self.loss = tf.reduce_mean((tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits,
labels=tf.squeeze(self.annotation,
squeeze_dims=[3]),
name="entropy")))
tf.summary.scalar("entropy", self.loss)
...
Run Code Online (Sandbox Code Playgroud)
在同一个文件中FCN.py
,我有一个使用该类的main,当Tensorflow打印输出时,我可以看到只使用了1个GPU,正如我期望的那样。
if __name__ == "__main__":
fcn = FCN()
fcn.train_model()
images_dir = '/home/super/datasets/MeterDataset/full-dataset-gas-images/'
for img_file in os.listdir(images_dir):
fcn.segment(os.path.join(images_dir, img_file))
Run Code Online (Sandbox Code Playgroud)
输出:
2018-01-09 …
Run Code Online (Sandbox Code Playgroud) 我有一个本地 git 存储库,用于git add file1 file2 file3...
将我的修改添加到 git 索引。之后我使用一个普通的git commit
. 每个命令大约需要 3 到 6 秒。我的存储库有大约 150.000 次提交。
我已经执行了,git gc
因为我认为它会执行一些垃圾收集。SSD 速度相当快。我想知道我可以在 git 中拧哪些螺丝来加速这两个命令的执行。有什么建议吗?
git version 2.21.0 (Apple Git-122.2)
Run Code Online (Sandbox Code Playgroud)
我的系统是带有 MacOS 的 Mac Pro 10.14.6
。我使用带有APFS
. 未安装防病毒软件(或任何其他干扰扫描软件)。
前几天我遇到一个命令
AWS_ACCESS_KEY="foo" AWS_SECRET_KEY="bar" aws list iam
Run Code Online (Sandbox Code Playgroud)
我看到在命令之前设置变量会在命令的环境中添加这些变量:
#make sure there is no environment variable "foo"
$ echo $foo
#mimic-ing above command
$ foo=bar printenv | grep foo
foo=bar
#or trying from python environment
$foo=bar python -c "import os; print(os.getenv('foo', None))"
bar
#foo is destroyed now
$ echo $foo
#<<NOTHING
Run Code Online (Sandbox Code Playgroud)
我试图使用这个技巧根据今天的日期动态创建一个新目录:
$ dname=$(date +%d_%m_%y) mkdir ${dname} && cd ${dname}
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
mkdir: missing operand
Try 'mkdir --help' for more information.
Run Code Online (Sandbox Code Playgroud)
即dname=$(date +%d_%m_%y) echo $dname
返回空!
我究竟做错了什么?如何在 bash 的同一行动态创建和使用变量?
当我做
Hello=123 npm run a && npm run b && npm run c
Run Code Online (Sandbox Code Playgroud)
我期望Hello=123
环境变量在a, b and c
进程内传递。但是事实证明只有a
正确设置了环境变量。
我还有其他方法可以一次传递所有参数吗?
bash ×5
linux ×3
unix ×3
python ×2
shell ×2
bdd ×1
command-line ×1
cuda ×1
environment ×1
eval ×1
git ×1
gpu ×1
node.js ×1
npm ×1
package.json ×1
python-2.7 ×1
sed ×1
sudo ×1
tensorflow ×1