Ubuntu Linux - Maverick - возможно ли найти имя пользователя / путь к файлу в командной строке и передать их в качестве аргументов? - PullRequest
1 голос
/ 29 января 2011

Я пытаюсь создать переносное решение для запуска программы, когда моя флешка USB подключена. Однако единственный способ, которым я мог ее запустить, - это использовать sudo и запустить программу из моей учетной записи пользователя следующим образом:

/usr/bin/sudo -u *username* /usr/local/bin/*program*

Однако я хочу, чтобы это решение было переносимым, существует ли команда, чтобы я всегда мог найти имя пользователя, не вводя его?Я попытался использовать whoami, и оно просто не сработало.

Кроме того, поиск пути к названной программе также был бы бонусом.Давайте назовем это helloworld.jar

** Примечание: я знаю, как найти обе эти вещи из командной строки, но я борюсь с тем, как поместить то, что они находят, в качестве аргумента командной строки.

Спасибо заранее за любую помощь

Ответы [ 3 ]

1 голос
/ 29 января 2011

Попробуйте запустить что-то вроде этого:

echo I am $(whoami) and the program named ls is in $(which ls).

Вот как вы подставляете команды с выводом в bash.

0 голосов
/ 29 января 2011

Обратите внимание на обратные кавычки, которые говорят оболочке заменять их содержимое своим выводом

/usr/bin/sudo -u `whoami` `which program`

Конечно, программа должна быть на вашем пути.

0 голосов
/ 29 января 2011

для первой части:

/usr/bin/sudo -u `echo $USERNAME` /usr/local/bin/program

Не уверен насчет «нахождения пути», но если вы знаете, как это сделать из командной строки, используйте трюк ``.

ОБНОВЛЕНИЕ: Возможно, я не до конца понял вашу проблему, но помните также, что вы можете установить переменные окружения в вашем .bashrc (и т. Д.), А также добавить дополнительные каталоги в ваш PATH.

...