Проблемы с скриптом sudo внутри оболочки

Я хочу, чтобы сценарий оболочки запускал VI с помощью sudo, если я попытаюсь отредактировать файл, у которого нет прав на запись, и для этого я создал псевдоним

    alias vi=my_script.sh

    #!/bin/bash
    file=$1

    if [ -r $file ]
    then
       /usr/bin/vi $file
    else
       sudo /usr/bin/vi $file
    fi        

Однако, нет Что делать, когда пытаешься отредактировать, скажем, / etc / hosts, мне все еще не разрешено редактировать его.

Что я делаю неправильно?

1
задан 27 December 2013 в 18:03

1 ответ

Хорошо, если бит в сером цвете - ваш my_script.sh, есть несколько проблем. Во-первых, псевдоним должен быть установлен в вашем .bashrc не в файле. Более подробно здесь.

Теперь на скрипте -r проверьте, читается ли файл, если он доступен для редактирования. Вероятно, вы читали, но не писали разрешения. Поэтому вы должны попробовать

#! /bin/bash

if test -w $1 
then
   /usr/bin/vi $1
else
   sudo /usr/bin/vi $1
fi

Это должно сработать. Один совет, который я бы добавил, это то, что если у вас возникла проблема с сценарием bash: покройте его в отчетах эха! Один в начале, чтобы проверить, что он открывается, по одному с каждой стороны оператора if, чтобы увидеть, куда он идет.

2
ответ дан 24 May 2018 в 13:41

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

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