Запуск моего сценария оболочки вместо встроенного файла Ubuntu

Мой сценарий оболочки готов к запуску.

Но моя проблема в том, что мне нужен пользователь для запуска сценария оболочки, а не встроенный файл Ubuntu

Например, я хочу, чтобы пользователь запускал сценарий оболочки passwd, а не passwd Ubuntu в / usr / bin / passwd

Я написал псевдоним на .bashrc, который выглядит следующим образом

alias passwd='./passwd'

У меня вопрос: как заставить пользователя запускать мой passwd вместо passwd в Ubuntu? Как отключить настоящий файл passwd?

Вне темы. Как переопределить sudo?
Поскольку мой сценарий оболочки содержит sudo, который при первом запуске выведет необходимый пароль. [ 117]

1
задан 23 August 2013 в 15:30

2 ответа

Вы должны указать псевдоним, например, alias passwd='/home/Unknown/bin/passwd'. Это часто делается по умолчанию для некоторых команд, таких как ls или grep, например, alias ls='ls --color=auto'. Здесь немного предыстории .

Чтобы запустить исходную команду, а не псевдоним, вы можете использовать command passwd stuff-to-do.

Это, как говорится, замена связанных с безопасностью двоичных файлов является глупой идеей.

РЕДАКТИРОВАТЬ: .bashrc не читается в неинтерактивной оболочке по умолчанию, то есть при запуске сценария оболочка, используемая сценарием, не читает файл .bashrc. Вы можете использовать функцию для этого в .bashrc, а затем export ее, например:

passwd(){
    /home/Unknown/bin/passwd
}
export -f passwd

Я не проверял это с passwd, но она должна работать.

Некоторые подробности взяты из ответов на этот вопрос .

0
ответ дан 23 August 2013 в 15:30

Как уже говорилось в предыдущих ответах, рекомендуется не называть свой сценарий тем же именем, что и уже существующий системный файл / команда.

Если вам действительно нужно это так называть, то, возможно, хотя бы добавьте .sh, чтобы немного разнообразить, например, Назовите сценарий «passwd.sh» (в общем, также рекомендуется для сценариев оболочки), чтобы минимизировать вероятность путаницы.

Что касается вашего вопроса, я бы предложил создать каталог bin в вашем домашнем каталоге или, возможно (если у вас есть права), поместить его в / usr / local / bin и затем изменить пользовательскую переменную PATH, чтобы скрипты в выбранное местоположение найдено / доступно, например:

$ cd; mkdir bin
$ export PATH="$HOME/bin:/usr/local/bin:$PATH"

Обратите внимание, что переменная PATH может уже содержать эти местоположения, лучше предварительно проверить это с помощью:

$ echo $PATH
0
ответ дан 23 August 2013 в 15:30

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

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