2016-02-02 15 views
0

这可能是一个微不足道的问题,但在shell脚本中使用内置变量的正确方法是什么?例如,如果我想编写一个脚本来打开在$ EDITOR中指定的默认文本编辑器。刚使用在bash脚本中导出内建变量

export EDITOR 

不会帮助。我发现,定义EDITOR变量有助于解决这个问题:

#!/bin/bash  
export EDITOR=vim 
$EDITOR 

以上的工作,但有没有给变量出口而不定义它的方法吗?提前致谢。

+0

那会完成什么?不,你不能输出不存在的东西。你为什么要从一个只运行你刚定义的东西的脚本中导出一些东西?你似乎对“export”的功能感到困惑。也许你应该更新你的问题来解释你为什么这么问。 – tripleee

+0

也许这可以帮到您?一种常见的情况是,如果定义了它,你想运行'EDITOR',否则就回退到'nano'。一个紧凑而又惯用的方法就是'$ {EDITOR-nano}' – tripleee

+0

在http://unix.stackexchange.com/上提问 – ceving

回答

1

EDITOR不是“内建”变量,您可以随时将其导出(即将其设置为环境变量)。这里没什么神奇的。尽管bash在某些情况下解释了这个变量,但是当他们想要启动一个编辑器时,应用程序访问这个变量是很常见的,所以在实际中,EDITOR通常是导出的。例如,我有我的.zshrc和的.bashrc行

export EDITOR=nano 

你的问题:您可以导出varible与 falue,这样

export EDITOR= 

但我不”看看你会从中获得什么。

如果你只是想确保,你的shell脚本和所有后代进程有编辑器进行设置,常见的成语是

: ${EDITOR:=vim} 
export EDITOR 

如果你的脚本的用户没有定义这个变量,它被设置在这里 - 你只需要两行,因为bash语法不允许将它合并为一个。

+0

你可以用'export EDITOR = $ {EDITOR:-vim '',但这可以说并不比简单使用两条线更好。 – chepner

+0

我喜欢你的建议。从维护的角度来看,IMO稍好一些。 – user1934428