У вас есть два варианта:
1.) Установите рабочий каталог в файле .desktop в расположение .jar
2.) Используйте полные пути в вашем Bash скрипт (как и вы)
Ответ: вы сразу вводите sudo !!, чтобы повторить предыдущая команда с эскалированными привилегиями.
edit: Изображение найдено через reddit, и это пародия на оригинальный комикс xkcd Рэндалла Мунро.
Вы можете попробовать стрелку вверх для прокрутки старых команд и переписать / изменить их и добавить sudo перед ними. (кнопка home над клавишами со стрелками устанавливает положение в начало.)
Мне не нравится идея sudo !!, потому что иногда вы добавляете другую команду между ними и больше не помните. [!d1 ]
Я просто добавлю альтернативу: так же коротко, как набрав sudo !! и более гибкий:
Up-arrow (once, or until you find the command you want to sudo/edit, if it's older)
ctrl+A (place cursor at beginning of line)
"sudo "
Enter
Это точно такое же количество нажатий клавиш (я считаю «ctrl + A» как один. ..), но добавив «стрелку вверх», вы можете сделать это в зависимости от того, какая команда находится в вашей истории.
Есть несколько способов сделать это
Просто введите команду еще раз, добавив sudo перед командой. Нажмите стрелку вверх, чтобы получить последнюю команду, и поставьте sudo перед ней. Введите sudo !!!! расширится до последней введенной команды. Вы можете делать похожие вещи с другими вещами с историей командной строки, см. Здесь
Этот вопрос можно было бы обобщить на «Запустить ту же команду, но с некоторой модификацией», поскольку одно из блестящих дизайнерских решений в Unix - это то, что реализовано один раз в оболочке, можно использовать любой командой, вызываемой из оболочки .
Другими словами, этот трюк не применяется только к sudo:
Повторить предыдущую команду как суперпользователь (sudo !!) Повторить предыдущую команду и время ее ( time !!) Повторите предыдущую команду с другой средой (env A=b B=z !!) Повторите предыдущую команду (!!)Расширение истории (также известное как замена истории) - это просто функция оболочки, чтобы повторять предыдущие команды проще (с меньшими нажатиями клавиш). Проверьте страницу man для оболочки history expansion. Он описывает еще много трюков и сокращений, которые вы можете сделать с историей, например:
Вы можете ссылаться на предыдущие команды по номеру:
!55 # repeat command number 55
!-1 # repeat the previous command, alias for !!
!-2 # repeat the command before the previous command
Вы можете ссылаться на отдельные слова в предыдущие команды:
some-command !$ # run some-command on the last arg of previous command
Вы также можете выполнить поиск перед повторением:
!?awk # repeat the last command including the string 'awk'
Вы можете искать историю и заменять что-то еще:
!?awk?:s/str1/str2/ # repeat previous command matching 'awk' replacing str1 by str2
И многое другое, поскольку вы можете комбинировать выбор команд, выбор аргументов, поиск и замену независимо.
Персональная страница вашей оболочки (в данном случае man bash) является вашим другом. [!d15 ]
Я использую zsh вместо bash и имею это в своем ~/.zshrc, поэтому нажатие Alt + S вставляет sudo в начале командной строки:
insert_sudo () { zle beginning-of-line; zle -U "sudo " }
zle -N insert-sudo insert_sudo
bindkey "^[s" insert-sudo
К сожалению, я не мог " t отслеживать способ сделать то же самое в bash.
su -c "!!"
Если у вас нет прав на root, программа sudo или sudo не установлена в системе.
Способ, которым я это предпочитаю:
Клавиша со стрелкой вверх «sudo» ВведитеНо может быть проще просто сделать «sudo !!», это зависит от вас.
Если вы хотите сделать это в псевдониме, вы должны использовать alias redo='sudo $(history -p !!)' по какой-либо причине.