почему “открытая” команда работает в соответствии с корневым каталогом?

Если Вы будете экспериментировать с этим, то это будет ясно:

В /etc/rc2.d, Вы найдете файлы, которые являются инструкциями, что должен сделать Ваш компьютер, когда он запускается.

Если Вы используете GNOME, ищете файл с gdm на его имя затем замените S (первая буква имени) нижним регистром s. (GDM - поскольку Вы, возможно, предположили менеджера по оформлению GNOME. При использовании некоторого другого комплекта, конечно, узнайте, какого менеджера по оформлению он использует, то отключите его таким же образом.)

Теперь, перезагрузите свой компьютер, и Вы заметите, что экран входа в систему больше не обнаруживается. Заключение 1: Никакой менеджер по оформлению, никакой экран входа в систему.

Вместо этого Вы войдете в систему консоли. Теперь, попытайтесь, например, проигрывать фильм (или сделать что-либо с графикой). Не будет работать! Это вызвано тем, что X не работает. Заключение 2: № X, никакая графика.

Третий шаг, начиная X: Путем ввода xinit, В зависимости от Вашего ~/.xinitrc файл, ряд приложений мог бы начать. Но, для иллюстрирования попытайтесь работать X только с терминалом, скажем, urxvt. Так, помещенный urxvt в .xinitrc и комментарий (с #) все остальное, затем введите xinit.

Необходимо теперь видеть urxvt окно. Здесь, Вы могли проигрывать фильмы и т.д. Но вместо этого, давайте переместимся urxvt окно где-то в другом месте. Не может сделать этого. Заключение 3: Никакой менеджер окон, ни одна из обычной функциональности GUI Вы, вероятно, привыкли к. Так, введите exit в urxvt. (Что команда выйдет из терминала, но, поскольку это было единственным процессом, выполненным, как указано в .xinitrc, X завершится также.)

В последний раз ступите, измените .xinitrc еще раз:

urxvt &
metacity

(отметьте & таким образом, процессы будут работать одновременно),

Работайте X снова и посмотрите результат. Последняя часть загадки: метагород, менеджер окон.

Для ухода ввести pkill -9 metacity. (На этом urxvt завершится также, возможно потому что, поскольку он был выполнен в фоновом режиме (с &), метагород является единственным процессом X мониторов.)

Удачи. Вероятно, Вы застрянете в некоторой детали, но это стоит того, для получения понимания.

1
23.08.2013, 01:23
1 ответ

open -a Terminal b похож на открытие b в Терминале от Средства поиска. Это говорит LaunchServices открываться b в Терминале и это не передает информации о текущей среде.

Можно использовать cd "$(dirname "$0")" к CD к каталогу сценария.

Если Вы хотите запустить скрипт в новом Окне терминала, можно использовать AppleScript:

osascript -e 'tell app "Terminal" to do script "cd " & quoted form of (system attribute "PWD") & "; ~/bin/b"'

1
27.01.2020, 23:53

Теги

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