Почему bash отрицает разрешение моего скриптового скрипта на открытие текстового файла с текстовым редактором по умолчанию?

Debian Jessie или Debian 8 известен как старомодный. Вы сравниваете его с гораздо более новым Ubuntu 16.04 LTS. Более подходящим сравнением может быть Ubuntu 14.04 LTS.

Текущая версия стабильной версии Debian - Stretch (Debian 9), поэтому она будет ближе соответствовать Ubuntu 16.04 LTS.

Обратите внимание, однако, что Debian & amp; Ubuntu вряд ли будут идеально соответствовать, поскольку они находятся на разных циклах выпуска; Ubuntu выпускается с фиксированной датой, Debian не работает и на более длительном цикле, даже если его выпуски происходят примерно два года, как выпуски LTS Ubuntu.

Ubuntu построен в основном из debian-тестирования (в настоящее время Debian 10 или Buster ), но также содержит Debian Sid ....

Я предлагаю сравнить Debian 8 с Ubuntu 14.04LTS, или если вы хотите Ubuntu 16.04LTS попробовать Debian 9. (из комментариев .. с благодарностью @ N0rbert, который тоже помог)

5
задан 17 February 2018 в 19:48

9 ответов

В bash переменная $EDITOR не задана по умолчанию. Однако есть команда, которая будет вызывать редактор по умолчанию.

Для этой команды это:

editor <filename>

Чтобы установить команду на ваш выбор:

sudo update-alternatives --config editor

Пример:

terrance@terrance-ubuntu:~$ sudo update-alternatives --config editor
There are 3 choices for the alternative editor (providing /usr/bin/editor).

  Selection    Path               Priority   Status
------------------------------------------------------------
  0            /bin/nano           40        auto mode
  1            /bin/ed            -100       manual mode
  2            /bin/nano           40        manual mode
* 3            /usr/bin/vim.tiny   10        manual mode

Press <enter> to keep the current choice[*], or type selection number:

После выбора вашего редактора по умолчанию все, что вам нужно сделать, чтобы вызвать его в вашем скрипте:

editor ~/.notes/"$2".txt

Надеюсь, это поможет!

11
ответ дан 22 May 2018 в 13:03
  • 1
    Для максимальной гибкости используйте ${EDITOR:-editor}. Это будет использовать значение $EDITOR, если оно установлено и не пустое или editor в противном случае. – David Foerster 18 February 2018 в 04:36

В bash переменная $EDITOR не задана по умолчанию. Однако есть команда, которая будет вызывать редактор по умолчанию.

Для этой команды это:

editor <filename>

Чтобы установить команду на ваш выбор:

sudo update-alternatives --config editor

Пример:

terrance@terrance-ubuntu:~$ sudo update-alternatives --config editor There are 3 choices for the alternative editor (providing /usr/bin/editor). Selection Path Priority Status ------------------------------------------------------------ 0 /bin/nano 40 auto mode 1 /bin/ed -100 manual mode 2 /bin/nano 40 manual mode * 3 /usr/bin/vim.tiny 10 manual mode Press <enter> to keep the current choice[*], or type selection number:

После выбора вашего редактора по умолчанию все, что вам нужно сделать, чтобы вызвать его в вашем скрипте:

editor ~/.notes/"$2".txt

Надеюсь, это поможет!

11
ответ дан 17 July 2018 в 20:37

В bash переменная $EDITOR не задана по умолчанию. Однако есть команда, которая будет вызывать редактор по умолчанию.

Для этой команды это:

editor <filename>

Чтобы установить команду на ваш выбор:

sudo update-alternatives --config editor

Пример:

terrance@terrance-ubuntu:~$ sudo update-alternatives --config editor There are 3 choices for the alternative editor (providing /usr/bin/editor). Selection Path Priority Status ------------------------------------------------------------ 0 /bin/nano 40 auto mode 1 /bin/ed -100 manual mode 2 /bin/nano 40 manual mode * 3 /usr/bin/vim.tiny 10 manual mode Press <enter> to keep the current choice[*], or type selection number:

После выбора вашего редактора по умолчанию все, что вам нужно сделать, чтобы вызвать его в вашем скрипте:

editor ~/.notes/"$2".txt

Надеюсь, это поможет!

11
ответ дан 23 July 2018 в 21:16

Переменная $EDITOR не установлена, поэтому при достижении этой строки она не заполняется. Выйти из ~/.notes/"$2".txt для вызова bash. Таким образом, bash пытается выполнить /home/username/.notes/testnote.txt, который дает разрешение, потому что для файла не установлен исполняемый флаг.

Как уже упоминалось в Terrance, вызовите команду editor напрямую или назначьте действительный текстовый редактор к переменной $EDITOR.

EDITOR="/usr/bin/vi"

или

EDITOR="/usr/bin/vim"

или

EDITOR="/bin/nano"

или любому другому редактору по вашему выбору. [!d6 ]

6
ответ дан 22 May 2018 в 13:03

Вкратце: В Debian / Ubuntu: запустите sensible-editor.

Но об ошибке вы видите:

Как уже упоминалось, если EDITOR пуст или не задан, неупомянутое расширение $EDITOR ничего не дает, поэтому то, что оболочка видит в качестве первого слова в строке, и как команда - это имя файла, которое появляется после.

] Процитированное расширение "$EDITOR" приведет к пустому слову, которое вызовет запутанную ошибку, когда оболочка попытается запустить пустую строку в виде команды:

bash: : command not found

Вероятно, вы хотите установить резерв в случае EDITOR не установлен. Вы можете использовать расширение ${par:-word} для этого. Например. "${EDITOR:-vi}" будет использовать значение EDITOR, а если он пуст или не установлен, вернитесь к vi.

Тогда есть также VISUAL, который в значительной степени выполняет ту же функцию, поэтому вы можете проверить оба: "${VISUAL:-${EDITOR:-vi}}".

Вкратце (вместо editor, vi или nano), поскольку он разрешает настройку по умолчанию для редактора по умолчанию , в отличие от editor, которая зависит от общесистемной символической ссылки, установленной update-alternatives.

sensible-editor также проверяет VISUAL и EDITOR, поэтому вам не нужно их явно проверять, но может просто запустить sensible-editor $file, и он пойдет правильно.

(Даже если ваша система может быть однопользовательской системой, хорошо иметь в виду, что многопользовательские системы существуют, и вы можете иметь несколько пользователей даже на настольной машине.)

0
ответ дан 22 May 2018 в 13:03

Вкратце: В Debian / Ubuntu: запустите sensible-editor.

Но об ошибке вы видите:

Как уже упоминалось, если EDITOR пуст или не задан, неупомянутое расширение $EDITOR ничего не дает, поэтому то, что оболочка видит в качестве первого слова в строке, и как команда - это имя файла, которое появляется после.

] Процитированное расширение "$EDITOR" приведет к пустому слову, которое вызовет запутанную ошибку, когда оболочка попытается запустить пустую строку в виде команды:

bash: : command not found

Вероятно, вы хотите установить резерв в случае EDITOR не установлен. Вы можете использовать расширение ${par:-word} для этого. Например. "${EDITOR:-vi}" будет использовать значение EDITOR, а если он пуст или не установлен, вернитесь к vi.

Тогда есть также VISUAL, который в значительной степени выполняет ту же функцию, поэтому вы можете проверить оба: "${VISUAL:-${EDITOR:-vi}}".

Вкратце (вместо editor, vi или nano), поскольку он разрешает настройку по умолчанию для редактора по умолчанию , в отличие от editor, который зависит от общесистемной символической ссылки, установленной update-alternatives.

sensible-editor также проверяет VISUAL и EDITOR, поэтому вам не нужно их явно проверять, но может просто запустить sensible-editor $file, и он пойдет правильно.

(Даже если ваша система может быть однопользовательской системой, хорошо иметь в виду, что многопользовательские системы существуют, и вы можете иметь несколько пользователей даже на настольной машине.)

0
ответ дан 17 July 2018 в 20:37

Переменная $EDITOR не установлена, поэтому при достижении этой строки она не заполняется. Выйти из ~/.notes/"$2".txt для вызова bash. Таким образом, bash пытается выполнить /home/username/.notes/testnote.txt, который дает разрешение, потому что для файла не установлен исполняемый флаг.

Как уже упоминалось в Terrance, вызовите команду editor напрямую или назначьте действительный текстовый редактор к переменной $EDITOR.

EDITOR="/usr/bin/vi"

или

EDITOR="/usr/bin/vim"

или

EDITOR="/bin/nano"

или любому другому редактору по вашему выбору.

6
ответ дан 17 July 2018 в 20:37

Вкратце: В Debian / Ubuntu: запустите sensible-editor.

Но об ошибке вы видите:

Как уже упоминалось, если EDITOR пуст или не задан, неупомянутое расширение $EDITOR ничего не дает, поэтому то, что оболочка видит в качестве первого слова в строке, и как команда - это имя файла, которое появляется после.

] Процитированное расширение "$EDITOR" приведет к пустому слову, которое вызовет запутанную ошибку, когда оболочка попытается запустить пустую строку в виде команды:

bash: : command not found

Вероятно, вы хотите установить резерв в случае EDITOR не установлен. Вы можете использовать расширение ${par:-word} для этого. Например. "${EDITOR:-vi}" будет использовать значение EDITOR, а если он пуст или не установлен, вернитесь к vi.

Тогда есть также VISUAL, который в значительной степени выполняет ту же функцию, поэтому вы можете проверить оба: "${VISUAL:-${EDITOR:-vi}}".

Вкратце (вместо editor, vi или nano), поскольку он разрешает настройку по умолчанию для редактора по умолчанию , в отличие от editor, который зависит от общесистемной символической ссылки, установленной update-alternatives.

sensible-editor также проверяет VISUAL и EDITOR, поэтому вам не нужно их явно проверять, но может просто запустить sensible-editor $file, и он пойдет правильно.

(Даже если ваша система может быть однопользовательской системой, хорошо иметь в виду, что многопользовательские системы существуют, и вы можете иметь несколько пользователей даже на настольной машине.)

0
ответ дан 23 July 2018 в 21:16

Переменная $EDITOR не установлена, поэтому при достижении этой строки она не заполняется. Выйти из ~/.notes/"$2".txt для вызова bash. Таким образом, bash пытается выполнить /home/username/.notes/testnote.txt, который дает разрешение, потому что для файла не установлен исполняемый флаг.

Как уже упоминалось в Terrance, вызовите команду editor напрямую или назначьте действительный текстовый редактор к переменной $EDITOR.

EDITOR="/usr/bin/vi"

или

EDITOR="/usr/bin/vim"

или

EDITOR="/bin/nano"

или любому другому редактору по вашему выбору.

6
ответ дан 23 July 2018 в 21:16

Другие вопросы по тегам:

Похожие вопросы: