У меня есть следующие псевдонимы в / etc / profile
.
# System-wide .profile for sh(1)
if [ -x /usr/libexec/path_helper ]; then
eval `/usr/libexec/path_helper -s`
fi
if [ "${BASH-no}" != "no" ]; then
[ -r /etc/bashrc ] && . /etc/bashrc
fi
alias startapache="/usr/local/Cellar/httpd22/2.2.29/bin/apachectl start"
alias stopapache="/usr/local/Cellar/httpd22/2.2.29/bin/apachectl stop"
alias ll='ls -lG'
Я только что добавил последние три псевдонима. Теперь, когда я выполняю
sudo su
: я не получаю эти псевдонимы.
sh-3.2# startapache
sh: startapache: command not found
но когда я не использую sudoing , я получаю эти псевдонимы (это оболочка bash). Но не запускает apache.
local:~ 112019$ startapache
(13)Permission denied: make_sock: could not bind to address [::]:80
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
bash
оболочка только читает /etc/profile
, когда вызвано как оболочка входа в систему , который su
обычно не делает - необходимо было бы вызвать su
с -
, -l
, или --login
опция. От man su
:
-, -l, --login
Provide an environment similar to what the user would expect had
the user logged in directly.
When - is used, it must be specified as the last su option. The
other forms (-l and --login) do not have this restriction.
Видят man bash
для полного изложения, о котором файлы запуска читаются интерактивным входом в систему, интерактивным невходом в систему и неинтерактивными оболочками.
Сделать те псевдонимы доступными для root
, можно поместить их в /root/.bash_aliases
.
Однако, если просто необходимо выполнить те псевдонимы как root
от Вашего пользователя можно просто поместить их в ~/.bash_aliases
и добавьте sudo
в начале команды каждого псевдонима:
alias startapache="sudo /usr/local/Cellar/httpd22/2.2.29/bin/apachectl start"
alias stopapache="sudo /usr/local/Cellar/httpd22/2.2.29/bin/apachectl stop"
alias ll='sudo ls -lG'
Также я не заметил это сначала, но использование ll
как псевдоним для ls -lG
сокрушил бы deafult ll
поведение псевдонима также, если начато /root/.bash_profile
и, если начато ~/.bash_profile
, где это установлено как псевдоним ls -la
: таким образом, если Вы не хотите сокрушить ll
поведение псевдонима для пользователя, для которого Вы закончите тем, что добавили те псевдонимы, необходимо изменить его имя на что-то еще, например, на lg
:
alias lg='sudo ls -lG'