相关疑难解决方法(0)

更正Bash和shell脚本变量大小写

我遇到了许多带有变量的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 shell scripting naming-conventions capitalization

171
推荐指数
5
解决办法
5万
查看次数

"导出"在shell编程中做了什么?

据我所知,变量赋值是相同的,无论它是否在"export"之前.这是为了什么?

bash shell zsh

110
推荐指数
3
解决办法
10万
查看次数

在bash脚本中导出数组

我无法将数据从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)

由于几个原因,我需要将我的数组初始化为多行.你有什么解决方案吗?

arrays bash export

49
推荐指数
3
解决办法
3万
查看次数

解释export LANG,LC_CTYPE,LC_ALL的效果

我刚刚安装了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)

它有所帮助,但也将我的界面语言改为俄语(我不想要).这甚至不是问题,但无论如何,我想知道,这段代码是如何工作的(每一行).

谢谢.

linux

42
推荐指数
4
解决办法
4万
查看次数

brew医生说"错误:/ usr/bin发生在/ usr/local/bin之前"如何修复?

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的位置.

谢谢

bash terminal homebrew path

36
推荐指数
4
解决办法
3万
查看次数

用Homebrew安装Ruby

我用Homebrew安装了Ruby:

brew install ruby
Run Code Online (Sandbox Code Playgroud)

根据"警告",它说:

注意:默认情况下,gem安装的二进制文件将放入:
/usr/local/Cellar/ruby/1.9.3-p194/bin

您可能希望将其添加到PATH中.

这是什么意思,我怎样才能将它添加到我的"路径"中?假设它与bash_profile有关,但对此却是新的.

ruby bash terminal homebrew

33
推荐指数
3
解决办法
5万
查看次数

python - os.getenv和os.environ看不到我的bash shell的环境变量

我在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)

python bash environment-variables pythonpath

33
推荐指数
2
解决办法
5万
查看次数


在bash中设置全局变量

我有功能,我希望它有时会挂起.所以我设置了一个全局变量然后读取它,如果它在几秒钟之后没有出现我放弃了.下面不是完整的代码,但是它不起作用,因为我没有将$ 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)

linux bash shell

6
推荐指数
1
解决办法
2万
查看次数

设置 DATABASE_URL 环境变量

我试图通过查看两勺 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 中,但我遇到了以上错误。为什么呢?

python django django-settings

6
推荐指数
1
解决办法
2万
查看次数