Zsh имеет sh режим эмуляции, который позволит ему выполнить POSIX sh код и некоторые расширения удара. Пока Вы не используете функции удара, которые не имеет zsh (с тем же синтаксисом), можно было получить тот же файл обе оболочки. Используйте emulate
встроенный для помещения zsh в режим эмуляции; с -L
опция, эмуляция локальна для функции включения (не, включение получило сценарий).
source_sh () {
emulate -LR sh
. "$@"
}
Для вещей как переменные среды можно использовать source_sh /etc/profile
в /etc/zprofile
и source_sh ~/.profile
в ~/.zprofile
, так как файлы профиля, вероятно, не используют определенные для удара функции.
Для вещей как псевдонимы и функциональные определения, так как файлы дистанционного управления оболочки, вероятно, будут содержать много вещей, которые не могут быть совместно использованы (подсказка, привязки клавиш, настройки завершения, …), использовать файл как ~/.sh_aliases
это получено в ~/.bashrc
и source_sh
'd в ~/.zshrc
.
Я не уверен, отвечает ли это на Ваш вопрос, но pwdx
мог дать Вам текущий рабочий каталог любого процесса.
Как это:
pwdx <PID>
Вы могли также сделать то, что Ulrich Schwarz сказал и выполнил
ls -l /proc/PID/cwd
Возможно, Вы найдете его как цель /proc/(pid)/cwd
. Это похоже на него, но я не нахожусь очень дома в /proc
.
Если это не необходимость иметь все другие информация, Вы могли бы попробовать это:
ps -ef | grep runner | awk {'print$8'} | xargs which
Это захватит восьмой столбец ps -ef
(это COMD
столбец на моей машине OS X; Вы, возможно, должны изменить это), и прокрутите его which
.
Это работает над моей машиной, как продемонстрировано здесь:
$ ps -ef | grep grep
mfc 25780 21222 0 11:54 pts/5 00:00:00 grep grep
$ ps -ef | grep grep | awk {'print$8'}
grep
$ ps -ef | grep grep | awk {'print$8'} | xargs which
/bin/grep