2016-02-02 6 views
0

Это может быть тривиальный вопрос, но каков правильный способ использования встроенных переменных в сценарии оболочки? Например, если я хочу написать скрипт, который открывает текстовый редактор по умолчанию, который указан в $ EDITOR. Только с использованиемЭкспорт встроенных переменных в сценарий bash

export EDITOR 

не поможет. Я узнал, что определение переменной EDITOR помогает решить эту проблему:

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

выше будет работать, но есть способ экспортировать переменную, не определяя его? Заранее спасибо.

+0

Что бы это сделало? Нет, вы не можете экспортировать то, чего не существует. Почему вы хотите экспортировать что-то из скрипта, который использует только то, что вы только что определили? Кажется, вы смущены тем, что делает «экспорт». Возможно, вам следует обновить свой вопрос, чтобы объяснить, почему вы спрашиваете об этом. – 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= 

, но я не» Посмотрите, что вы получите от этого.

Если вы просто хотите, чтобы убедиться, что ваш сценарий оболочки и все процессы имеют EDITOR-потомки набор, общий идиома

: ${EDITOR:=vim} 
export EDITOR 

Если пользователь вашего скрипта не определяет эту переменную, то набор здесь - вам просто нужны две строки, потому что синтаксис bash не позволяет объединить это в один.

+0

Вы можете свернуть его в одну строку с помощью 'export EDITOR = $ {EDITOR: -vim } ', но это, возможно, не лучше, чем просто использование двух строк. – chepner

+0

Мне нравится ваше предложение. С точки зрения обслуживания, ИМО немного лучше. – user1934428

 Смежные вопросы

  • Нет связанных вопросов^_^