2009-03-19 2 views
5

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

Скажите, я пытаюсь запустить исполняемый файл 'abc'. Теперь сервер, возможно, предоставил псевдоним для «abc». Как мне узнать об этом пути? Как и в случае, если я вызываю «abc», он может запустить его, скажем,/opt/corp/xyz/abc. Как узнать, с какого пути я запускаю исполняемый файл?

Кстати я бегу на HP-UX: D

ответ

10

"which abc", чтобы показать, какие abc вы называть

или "alias" в список псевдонимов

возможно «эхо $ 0 "из скрипта или извлечения argv [0] другим способом.

2

Есть ли у HP-UX команда «что»? Run:

which abc 

Если у вас есть, команда which покажет вам, какие а программа будет работать с вашей $PATH.

4

Если вы работаете с помощью переменной PATH среды, вы можете попробовать:

$ which abc

или

$ whereis abc

Если есть символическая ссылка для команды, и вы хотите знать " реальный " цель, вы можете использовать что-то вроде:

 
$ readlink /opt/corp/xyz/abc 

У меня нет доступа к системе HPUX передо мной прямо сейчас, но это должно работать:

$ ls -l /opt/local/bin/wish 
lrwxr-xr-x 1 root admin 22 Feb 3 21:56 /opt/local/bin/[email protected] -> /opt/local/bin/wish8.5 
$ readlink /opt/local/bin/wish 
/opt/local/bin/wish8.5 

Если команда на основе псевдонима следующее раскроет определение псевдонима.

 
$ alias abc 

В зависимости от того, как настроена ваша система, приведенные выше команды должны содержать ответы на несколько вариантов вашего вопроса.

в Perl:

$running_script = $0; 

из Python см SO How to get filename of the __main__ module in Python?

1

Из командной строки терминала:

$, которые а

/опт/АМФА/хуга/а

2

Спасибо всем! 'который' был commmand я был после! Я сам сталкиваюсь с этим, так как я уже знал команду (в Ubuntu). И это работает как шарм в HP-UX!

EDIT: «whereis», предложенный popcnt, еще более уместен! Thanx много человек!

+0

если вы любите мой, идти вперед и +1, и если удовлетворительное, вы могли бы отметьте это как ответ на свой вопрос. Это обычно то, что вы увидите здесь на SO, вместо «ответа» с оригинального плаката. – popcnt

1

Правильный способ получить путь скрипта на Unix является:

dir=$(cd $(dirname "$0"); pwd) 

фона: $ 0 имя файла + путь сценария относительно текущего каталога. Он может быть абсолютным (/...) или относительным (../, dir/...). Таким образом, $(dirname "$0") возвращает путь (без имени файла). Обратите внимание на цитаты; «$ 0» может содержать пробелы и другие странные вещи.

Мы затем cd в этот каталог и pwd вернем абсолютный путь, где мы закончим.

Работы для ksh и bash.

В программе на C вы должны проверить argv[0]. Я не уверен, будет ли оболочка помещать полный путь туда. Если у вас возникли проблемы, я предлагаю, чтобы обернуть ваш исполняемый файл в небольшой скрипт, который подготавливает среду и затем вызвать свой исполняемый файл с:

exec "$dir/"exe "[email protected]" 
Смежные вопросы