我遇到了许多带有变量的shell脚本,我一直认为存在严重的误解.我的理解是,按照惯例(也许很久以前就必须),环境变量都是全部的.
但是在像Bash这样的现代脚本环境中,我总是倾向于使用临时变量的小写名称约定,而仅为导出(即环境)变量使用大写的约定.例如:
#!/usr/bin/env bash
year=`date +%Y`
echo "It is $year."
export JAVA_HOME="$HOME/java"
Run Code Online (Sandbox Code Playgroud)
这一直是我对事物的看法.是否有任何权威来源同意或不同意这种方法,还是纯粹是风格问题?
我无法将数据从bash脚本导出到另一个bash脚本,如下所示:
export myArray[0]="Hello"
export myArray[1]="World"
Run Code Online (Sandbox Code Playgroud)
当我这样写时没有问题:
export myArray=("Hello" "World")
Run Code Online (Sandbox Code Playgroud)
由于几个原因,我需要将我的数组初始化为多行.你有什么解决方案吗?
我刚刚安装了Linux Mint 17并遇到了一个问题,我无法在终端中使用俄语.(我看到的?不是字母).在一个论坛上我发现了这个解决方案
在〜/ .profile中添加:
export LANG=ru_RU.UTF-8
export LC_CTYPE=ru_RU.UTF-8
export LC_ALL=ru_RU.UTF-8
Run Code Online (Sandbox Code Playgroud)
它有所帮助,但也将我的界面语言改为俄语(我不想要).这甚至不是问题,但无论如何,我想知道,这段代码是如何工作的(每一行).
谢谢.
Adams-MacBook-Pro% brew doctor
Error: /usr/bin occurs before /usr/local/bin
This means that system-provided programs will be used instead of those
provided by Homebrew. The following tools exist at both paths:
clusterdb
createdb
createlang
createuser
dropdb
droplang
dropuser
ecpg
git
git-cvsserver
git-receive-pack
git-shell
git-upload-archive
git-upload-pack
gitk
pg_config
pg_dump
pg_dumpall
pg_restore
pg_upgrade
psql
reindexdb
vacuumdb
Consider amending your PATH so that /usr/local/bin
is ahead of /usr/bin in your PATH.
Run Code Online (Sandbox Code Playgroud)
这是我的路径:
Adams-MacBook-Pro% echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
Run Code Online (Sandbox Code Playgroud)
我认为将事情移到前线是危险的?我该如何解决这个问题?另外,我甚至不确定在哪里找到路径中声明/ user/bin的位置.
谢谢
我用Homebrew安装了Ruby:
brew install ruby
Run Code Online (Sandbox Code Playgroud)
根据"警告",它说:
注意:默认情况下,gem安装的二进制文件将放入:
/usr/local/Cellar/ruby/1.9.3-p194/bin您可能希望将其添加到PATH中.
这是什么意思,我怎样才能将它添加到我的"路径"中?假设它与bash_profile有关,但对此却是新的.
我在ubuntu 13.04,bash,python2.7.4
解释器没有看到我设置的变量.
这是一个例子:
$ echo $A
5
$ python -c 'import os; print os.getenv( "A" )'
None
$ python -c 'import os; print os.environ[ "A" ]'
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python2.7/UserDict.py", line 23, in __getitem__
raise KeyError(key)
KeyError: 'A'
Run Code Online (Sandbox Code Playgroud)
但是PATH变量的一切正常:
$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
$ python -c 'import os; print os.getenv("PATH")'
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Run Code Online (Sandbox Code Playgroud)
它注意到PATH:
$ PATH="/home/alex/tests/:$PATH"
$ echo $PATH
/home/alex/tests/:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
$ python -c 'import os; print os.getenv("PATH")'
/home/alex/tests/:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games …Run Code Online (Sandbox Code Playgroud) 为什么export需要?它出口到哪里?
我有功能,我希望它有时会挂起.所以我设置了一个全局变量然后读取它,如果它在几秒钟之后没有出现我放弃了.下面不是完整的代码,但是它不起作用,因为我没有将$ START作为值5
START=0
ineer()
{
sleep 5
START=5
echo "done $START" ==> I am seeing here it return 5
return $START
}
echo "Starting"
ineer &
while true
do
if [ $START -eq 0 ]
then
echo "Not null $START" ==> But $START here is always 0
else
echo "else $START"
break;
fi
sleep 1;
done
Run Code Online (Sandbox Code Playgroud) 我试图通过查看两勺 django 来创建我自己的项目结构。项目结构看起来像这样
. 环境
. 当地的
.django
.postgres
Run Code Online (Sandbox Code Playgroud)
。生产
.django
.postgres
Run Code Online (Sandbox Code Playgroud)
在本地内部的postgres中,列出了以下项目
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_DB=marketing
POSTGRES_USER=username
POSTGRES_PASSWORD=password
DATABASE_URL=postgres://username:password@localhost:5432/marketing
Run Code Online (Sandbox Code Playgroud)
设置文件分为 3 部分作为 base.py, local.py and production.py
在 base.py 中,我已将DATABASES密钥配置如下
DATABASES = {
'default': env.db('DATABASE_URL'),
}
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误
django.core.exceptions.ImproperlyConfigured:设置 DATABASE_URL 环境变量
虽然,我DATABASE_URL在 .envs/.local/.postgres 中,但我遇到了以上错误。为什么呢?