open
является точным эквивалентом двойного щелчка по объекту в Finder. Поэтому, если вы используете его в исполняемом файле UNIX, то исполняемый файл запустится, но текущий рабочий каталог не будет находиться там, где находится исполняемый файл, и не обязательно будет чем-то полезным. Однако вы также можете использовать его для открытия файла .doc или любого другого типа, открытия каталога в Finder, открытия URL-адреса в Finder и т. Д.
Запуск исполняемого файла с ./name - это обычный UNIX-способ запуска. Текущий рабочий каталог будет там, где вы находитесь, когда вы его набираете. Таким образом, это будет тот же каталог, в котором находится исполняемый файл (если только вы не запускаете его из другого места на диске, например, перейдя в каталог и используя ../name для запуска исполняемого файла).
Что вы, вероятно, хотите сделать, это написать код, чтобы получить путь к исполняемому файлу и найти указанный файл относительно этого? Вы не говорите, на каком языке вы работаете, и, к сожалению, это не то, что входит в спецификацию POSIX, поэтому оно варьируется от ОС к ОС.
Если вы находитесь в C или что-то, что может вызвать C (например, C ++, Objective-C и т. Д.), Тогда NSGetExecutablePath
(игнорируйте желание Google поставить подчеркивание перед ним, см., Например, this site ) вполне вероятно, что вы хотите. Если вы находитесь в Objective-C, то NSString
имеет несколько методов для автоматического добавления путей.