Выполнение программ, не имея необходимость указывать каталог?

Для обнаружения сессии SSH использовать $SSH_CLIENT.

Для различения локальные и удаленные сеансы существует два возможных подхода: клиентская или серверная сторона. На стороне сервера выдержать сравнение $SSH_CLIENT с локальным IP-адресом или таблицей маршрутизации; это будет обычно говорить Вам, является ли соединение от LAN. На стороне клиента можно хотеть поместить ForwardX11 настройки в Вашем ~/.ssh/config: установите его на yes для хостов LAN и к no для хостов WAN. Это подразумевает наличие другого ~/.ssh/config на различных сайтах; это - то, что я делаю, и я генерирую мой со сценарием оболочки.

Если передача X11 идет для соединений LAN и прочь для соединений WAN, то можно установить любимого редактора для взятия $DISPLAY во внимание.

Настройки серверной стороны обычно входили бы в Ваш .profile (или .bash_profile если Ваша оболочка входа в систему является ударом, и Вы используете .bash_profile, или .zprofile если Ваша оболочка входа в систему является zsh).

case ${SSH_CLIENT%% *}//$(/sbin/ifconfig |
                          sed -n 's/^.* addr:\([0-9][0-9.]*\) .*/\1/p' |
                          tr '\n' /)/ in
  "") :;;# local session
  10.42.*/10.42.*) :;; # LAN session
  1.2.3.*/1.2.3.*) :;; # LAN session
  *) unset DISPLAY;; # WAN session
esac
export EDITOR=vim
if [ -n "$DISPLAY" ] && type gvim >/dev/null 2>/dev/null; then
  EDITOR=gvim
fi
export VISUAL="$EDITOR"
2
14.07.2016, 14:10
4 ответа

Вы обычно не вводите команду для выполнения Apache: это запускается когда начальные загрузки системы. Сценарии в /etc/init.d запустите сервисы, и выполняются автоматически во время начальной загрузки, если Ваша система настраивается правильно. С большинством дистрибутивов сервисам включают по умолчанию и запустятся, если Вы не сделали что-то для отключения их.

Если Вы остановили Apache и хотите перезапустить его, /etc/init.d/apache2 start нормальный путь — или предпочтительно service apache2 start. Это было бы мало полезно, чтобы иметь более короткую команду, так как это не что-то, что Вы сделали бы как часть использования нормальной системы. Команды, которые предназначаются для общего использования, может быть выполнен, не указывая их полный путь; эти команды находятся в каталогах, перечисленных в PATH переменная среды (какой Windows подражает).

9
27.01.2020, 21:48

Необходимо, вероятно, использовать service управляйте для запуска его.

service apache2 start

И апачские аргументы должны быть в Вашем /etc/apache2 структура.

6
27.01.2020, 21:48

Существует много способов вызвать команду (сценарий или двоичный исполняемый файл), это не в досягаемости Вашего PATH.

Те методы хороши для знания - но при нахождении всего больше необычных трюков только для выполнения команд, затем это указало бы меньше, чем оптимальное проектирование системы.

Скажем, это - Ваш сценарий, названный s, и Вы помещаете его в /home (для создания этого недостижимым, как /home находится несомненно не в Вашем PATH):

echo "The first argument is: $1"
echo "The second argument is: $2"

Три способа все еще достигнуть его, не давая полный путь:

Псевдоним: alias salias='/home/s'

Функция: sfunc () { /home/s $@ }

Ссылка: ln -s /home/s slink

Первые два при использовании их снова Вы вставили свой файл инициализации оболочки (.bashrc для удара, .zshrc для zsh, и т.д.). Для использования ссылки (третий случай) необходимо было бы поместить его в каталог, включенный в Вас PATH, или, Вы вызвали бы его явно с полным путем (например, если Вы находитесь в том же каталоге, ./slink one two).

3
27.01.2020, 21:48

Это вызвано тем, что/etc/init.d/не установлен в $PATH.

Это - по существу:-separated список каталогов. При выполнении команды оболочка перерывает каждый из этих каталогов, один за другим, пока это не находит каталог, где исполняемый файл существует. (http://www.cs.purdue.edu/homes/cs348/unix_path.html)

4
27.01.2020, 21:48
  • 1
    В то время как это верно, некоторые оболочки развернут псевдонимы, поиск функций, и проверят, что это - внутренний хеш до ищущего ПУТИ. спасибо –  jordanm 17.11.2012, 01:18

Теги

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