Исполняемый путь выполнения. Это зависит от места, из которого вызывается исполняемый файл?

, поскольку я все еще новый пользователь Linux, я все еще обнаруживаю некоторые виды поведения, и я не могу сказать, являются ли они «нормалями» или нет. Я искал в Интернете, но, поскольку я не могу найти ответ, я думаю, пришло время спросить здесь.

Несколько недель назад я установил небольшую игру под названием «Machinarium», и я сыграл ее ... но мало несколько дней спустя, когда я хотел продолжить игру, я не смог заставить игру начать правильно. И поскольку у меня не было времени на поиски, я сдался.

Но вчера, когда я работал над моей программой, у меня было такое же поведение. Поэтому я немного искал и обнаружил, что при использовании Nautilus с «представлением списка» мне удалось запустить программу (то есть: программа находит ресурсы звука, изображений и т. Д.), Когда я буквально «внутри» исполняемой папки , но не удалось, когда я был в родительской папке и расширил ее в исполняемую папку, чтобы запустить ее.

Чтобы проиллюстрировать поведение здесь, два снимка экрана.

Это не работает если исполняемый файл дважды щелкнут здесь, он работает, если исполняемый файл дважды щелкнул здесь

Это действительно то же самое «место», но представление Nautilus несколько отличается, поскольку текущая папка не совпадает и это, кажется, имеет значение для программы.

Кроме того, когда я создаю элементы меню через исполняемую папку для исполняемого файла, она ведет себя так же, как если исполняемый файл может " t найти ресурсы (вот почему я не смог сыграть в Machinarium во второй раз, когда создал свою команду после первой игры).

Итак, я спросил m y для генерации текстового файла в корневом каталоге при запуске, и я начал запускать его из разных «родительских» папок, чтобы увидеть, где сгенерирован текстовый файл. Каждый раз, когда файл был сгенерирован в верхней папке текущего представления Nautilus.

Я ожидал, что он появится в той же папке исполняемого файла (ну не так, как я предполагал, что происходит, но раньше что я бы ожидал увидеть его в папке exe).

Это не работает, если исполняемый файл дважды нажат здесь Как я должен решить эту проблему при создании программ (Должен ли я определять исполняемый путь в моем коде на C ++ или мне нужно упорядочить файлы ресурсов другим способом, чем на окнах?)
2
задан 22 June 2011 в 04:31

14 ответов

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

Для запуска приложения должен быть установлен исполняемый бит.

Затем вы можете запускать любой исполняемый двоичный файл или скрипт, дважды щелкнув в Nautilus или выполнив следующее в терминале (например, «Nautilus» в меню правой кнопки мыши (Properties -> Permissions).

обратите внимание на команду запуска ./):

./path/to/executable/application

Если ваше приложение должно быть запущено на своем пути, вам необходимо сначала изменить каталог на этот путь, выполнив:

cd /path/to/executable ./application

Чтобы облегчить это, вы также можете создать Launcher для запуска приложения (см., например, установить пользовательские приложения и многие другие)

Так я сделал это с Machinarium .

Не рекомендуется размещать собственные пользовательские файлы пользователя в /usr/bin. Этот каталог может быть перезаписан, если вы позже обновите свою систему и обычно не включаетесь в решения для резервного копирования. Вместо этого создайте новый каталог в своем домашнем каталоге: ~/bin. Вам необходимо повторно зарегистрироваться для этого каталога.

3
ответ дан 25 July 2018 в 21:41
  • 1
    В окнах существует переменная среды %PATH%, каталоги разделяются символом ;. В Ubuntu эквивалент $PATH, в котором каталоги разделены символом :. Чтобы добавить новый каталог к ​​текущему, который должен иметь приоритет над старыми каталогами, поместите следующую строку в свой ~/.profile: PATH=/full/path/to/your/bin-dir:$PATH – Lekensteyn 22 June 2011 в 12:45
[D0] Да. PATH содержит список путей, в которых команды выполняются при их вводе. Если вы хотите выполнить команду не в пути, вам нужно указать относительный или абсолютный путь (./file или bin/file, например).

Такое поведение, вероятно, является ошибкой. Приложение, вероятно, выполняет некоторые файлы в одной из своих директорий (например, bin/), но при условии, что это выполняется из корневого каталога machinarium (вызовы bin/file, предполагающие, что dir находится в текущем каталоге), поэтому, если вы запустите его из другого каталога файл не будет найден.

Обходной путь - создать скрипт в PATH, который входит в каталог machinarium, а затем выполняет его.

#!/bin/bash cd /path/to/machinarium ./machinarium-or-whatever

просто назовите его machinarium и поместите он находится в каталоге, который находится на вашем пути (/ usr / local / bin или один в вашем / доме). Затем вы можете запустить эту команду из любого каталога.

1
ответ дан 25 July 2018 в 21:41
  • 1
    Я бы поднял предложение, если вы удалите предложение, чтобы поместить скрипт в /usr/bin. – enzotib 22 June 2011 в 12:58
  • 2
    вы правы / usr / bin - это не место, чтобы его поместить. – santiagozky 24 June 2011 в 05:28

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

Для запуска приложения должен быть установлен исполняемый бит.

Затем вы можете запускать любой исполняемый двоичный файл или скрипт, дважды щелкнув в Nautilus или выполнив следующее в терминале (например, «Nautilus» в меню правой кнопки мыши (Properties -> Permissions).

обратите внимание на команду запуска ./):

./path/to/executable/application

Если ваше приложение должно быть запущено на своем пути, вам необходимо сначала изменить каталог на этот путь, выполнив:

cd /path/to/executable ./application

Чтобы облегчить это, вы также можете создать Launcher для запуска приложения (см., например, установить пользовательские приложения и многие другие)

Так я сделал это с Machinarium .

Не рекомендуется размещать собственные пользовательские файлы пользователя в /usr/bin. Этот каталог может быть перезаписан, если вы позже обновите свою систему и обычно не включаетесь в решения для резервного копирования. Вместо этого создайте новый каталог в своем домашнем каталоге: ~/bin. Вам необходимо повторно зарегистрироваться для этого каталога.

3
ответ дан 2 August 2018 в 03:17
  • 1
    В окнах существует переменная среды %PATH%, каталоги разделяются символом ;. В Ubuntu эквивалент $PATH, в котором каталоги разделены символом :. Чтобы добавить новый каталог к ​​текущему, который должен иметь приоритет над старыми каталогами, поместите следующую строку в свой ~/.profile: PATH=/full/path/to/your/bin-dir:$PATH – Lekensteyn 22 June 2011 в 12:45
[D0] Да. PATH содержит список путей, в которых команды выполняются при их вводе. Если вы хотите выполнить команду не в пути, вам нужно указать относительный или абсолютный путь (./file или bin/file, например).

Такое поведение, вероятно, является ошибкой. Приложение, вероятно, выполняет некоторые файлы в одной из своих директорий (например, bin/), но при условии, что это выполняется из корневого каталога machinarium (вызовы bin/file, предполагающие, что dir находится в текущем каталоге), поэтому, если вы запустите его из другого каталога файл не будет найден.

Обходной путь - создать скрипт в PATH, который входит в каталог machinarium, а затем выполняет его.

#!/bin/bash cd /path/to/machinarium ./machinarium-or-whatever

просто назовите его machinarium и поместите он находится в каталоге, который находится на вашем пути (/ usr / local / bin или один в вашем / доме). Затем вы можете запустить эту команду из любого каталога.

1
ответ дан 2 August 2018 в 03:17
  • 1
    Я бы поднял предложение, если вы удалите предложение, чтобы поместить скрипт в /usr/bin. – enzotib 22 June 2011 в 12:58
  • 2
    вы правы / usr / bin - это не место, чтобы его поместить. – santiagozky 24 June 2011 в 05:28

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

Для запуска приложения должен быть установлен исполняемый бит.

Затем вы можете запускать любой исполняемый двоичный файл или скрипт, дважды щелкнув в Nautilus или выполнив следующее в терминале (например, «Nautilus» в меню правой кнопки мыши (Properties -> Permissions).

обратите внимание на команду запуска ./):

./path/to/executable/application

Если ваше приложение должно быть запущено на своем пути, вам необходимо сначала изменить каталог на этот путь, выполнив:

cd /path/to/executable ./application

Чтобы облегчить это, вы также можете создать Launcher для запуска приложения (см., например, установить пользовательские приложения и многие другие)

Так я сделал это с Machinarium .

Не рекомендуется размещать собственные пользовательские файлы пользователя в /usr/bin. Этот каталог может быть перезаписан, если вы позже обновите свою систему и обычно не включаетесь в решения для резервного копирования. Вместо этого создайте новый каталог в своем домашнем каталоге: ~/bin. Вам необходимо повторно зарегистрироваться для этого каталога.

3
ответ дан 4 August 2018 в 19:12
  • 1
    В окнах существует переменная среды %PATH%, каталоги разделяются символом ;. В Ubuntu эквивалент $PATH, в котором каталоги разделены символом :. Чтобы добавить новый каталог к ​​текущему, который должен иметь приоритет над старыми каталогами, поместите следующую строку в свой ~/.profile: PATH=/full/path/to/your/bin-dir:$PATH – Lekensteyn 22 June 2011 в 12:45
[D0] Да. PATH содержит список путей, в которых команды выполняются при их вводе. Если вы хотите выполнить команду не в пути, вам нужно указать относительный или абсолютный путь (./file или bin/file, например).

Такое поведение, вероятно, является ошибкой. Приложение, вероятно, выполняет некоторые файлы в одной из своих директорий (например, bin/), но при условии, что это выполняется из корневого каталога machinarium (вызовы bin/file, предполагающие, что dir находится в текущем каталоге), поэтому, если вы запустите его из другого каталога файл не будет найден.

Обходной путь - создать скрипт в PATH, который входит в каталог machinarium, а затем выполняет его.

#!/bin/bash cd /path/to/machinarium ./machinarium-or-whatever

просто назовите его machinarium и поместите он находится в каталоге, который находится на вашем пути (/ usr / local / bin или один в вашем / доме). Затем вы можете запустить эту команду из любого каталога.

1
ответ дан 4 August 2018 в 19:12
  • 1
    Я бы поднял предложение, если вы удалите предложение, чтобы поместить скрипт в /usr/bin. – enzotib 22 June 2011 в 12:58
  • 2
    вы правы / usr / bin - это не место, чтобы его поместить. – santiagozky 24 June 2011 в 05:28

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

Для запуска приложения должен быть установлен исполняемый бит.

Затем вы можете запускать любой исполняемый двоичный файл или скрипт, дважды щелкнув в Nautilus или выполнив следующее в терминале (например, «Nautilus» в меню правой кнопки мыши (Properties -> Permissions).

обратите внимание на команду запуска ./):

./path/to/executable/application

Если ваше приложение должно быть запущено на своем пути, вам необходимо сначала изменить каталог на этот путь, выполнив:

cd /path/to/executable ./application

Чтобы облегчить это, вы также можете создать Launcher для запуска приложения (см., например, установить пользовательские приложения и многие другие)

Так я сделал это с Machinarium .

Не рекомендуется размещать собственные пользовательские файлы пользователя в /usr/bin. Этот каталог может быть перезаписан, если вы позже обновите свою систему и обычно не включаетесь в решения для резервного копирования. Вместо этого создайте новый каталог в своем домашнем каталоге: ~/bin. Вам необходимо повторно зарегистрироваться для этого каталога.

3
ответ дан 6 August 2018 в 03:28
  • 1
    В окнах существует переменная среды %PATH%, каталоги разделяются символом ;. В Ubuntu эквивалент $PATH, в котором каталоги разделены символом :. Чтобы добавить новый каталог к ​​текущему, который должен иметь приоритет над старыми каталогами, поместите следующую строку в свой ~/.profile: PATH=/full/path/to/your/bin-dir:$PATH – Lekensteyn 22 June 2011 в 12:45
[D0] Да. PATH содержит список путей, в которых команды выполняются при их вводе. Если вы хотите выполнить команду не в пути, вам нужно указать относительный или абсолютный путь (./file или bin/file, например).

Такое поведение, вероятно, является ошибкой. Приложение, вероятно, выполняет некоторые файлы в одной из своих директорий (например, bin/), но при условии, что это выполняется из корневого каталога machinarium (вызовы bin/file, предполагающие, что dir находится в текущем каталоге), поэтому, если вы запустите его из другого каталога файл не будет найден.

Обходной путь - создать скрипт в PATH, который входит в каталог machinarium, а затем выполняет его.

#!/bin/bash cd /path/to/machinarium ./machinarium-or-whatever

просто назовите его machinarium и поместите он находится в каталоге, который находится на вашем пути (/ usr / local / bin или один в вашем / доме). Затем вы можете запустить эту команду из любого каталога.

1
ответ дан 6 August 2018 в 03:28
  • 1
    Я бы поднял предложение, если вы удалите предложение, чтобы поместить скрипт в /usr/bin. – enzotib 22 June 2011 в 12:58
[D5] Да. PATH содержит список путей, в которых команды выполняются при их вводе. Если вы хотите выполнить команду не в пути, вам нужно указать относительный или абсолютный путь ( ./ file или bin / file ).

Такое поведение, вероятно, является ошибкой. Например, приложение, возможно, выполняет некоторые файлы в одной из своих директорий ( bin / ), но при условии, что это выполняется из корневого каталога машинистария (вызовы bin / file в текущем каталоге), поэтому, если вы запустите его из другого каталога, файл не будет найден.

Обходной путь заключается в создании скрипта в PATH, который входит в каталог machinarium и затем выполняет его.

  #! / bin / bash cd / path / to / machinarium ./machinarium-or-whatever  

просто назовите его machinarium и поместите его под каталог, который на вашем пути (/ usr / local / bin или один в вашем / доме). Вы можете запустить эту команду из любого каталога.

1
ответ дан 7 August 2018 в 21:15

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

Для запуска приложения должен быть установлен исполняемый бит. Это можно также сделать из Nautilus в меню правой кнопки мыши ( Свойства -> Разрешения ).

Затем вы можете запустить любой исполняемый двоичный файл или скрипт, дважды щелкнув в Nautilus или запустите следующую команду в терминале (обратите внимание на команду запуска ./ ):

  ./ path / to / executable / application  

Если ваше приложение должно быть запущено на своем пути, вам нужно сначала изменить каталог на этот путь, выполнив:

  cd / path / to / executable ./application  

Чтобы облегчить это, вы также можете создать Launcher для запуска приложения (см., например, этот ответ и многие другие)

Вот как я это сделал это с Machinarium.

Не рекомендуется размещать собственные пользовательские файлы в / usr / bin . Этот каталог может быть перезаписан, если вы позже обновите свою систему и обычно не включаетесь в решения для резервного копирования. Вместо этого создайте новый каталог в своем домашнем каталоге: ~ / bin . Вам необходимо повторно зарегистрироваться для этого каталога.

3
ответ дан 7 August 2018 в 21:15
[D5] Да. PATH содержит список путей, в которых команды выполняются при их вводе. Если вы хотите выполнить команду не в пути, вам нужно указать относительный или абсолютный путь ( ./ file или bin / file ).

Такое поведение, вероятно, является ошибкой. Например, приложение, возможно, выполняет некоторые файлы в одной из своих директорий ( bin / ), но при условии, что это выполняется из корневого каталога машинистария (вызовы bin / file в текущем каталоге), поэтому, если вы запустите его из другого каталога, файл не будет найден.

Обходной путь заключается в создании скрипта в PATH, который входит в каталог machinarium и затем выполняет его.

  #! / bin / bash cd / path / to / machinarium ./machinarium-or-whatever  

просто назовите его machinarium и поместите его под каталог, который на вашем пути (/ usr / local / bin или один в вашем / доме). Вы можете запустить эту команду из любого каталога.

1
ответ дан 10 August 2018 в 09:34

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

Для запуска приложения должен быть установлен исполняемый бит. Это можно также сделать из Nautilus в меню правой кнопки мыши ( Свойства -> Разрешения ).

Затем вы можете запустить любой исполняемый двоичный файл или скрипт, дважды щелкнув в Nautilus или запустите следующую команду в терминале (обратите внимание на команду запуска ./ ):

  ./ path / to / executable / application  

Если ваше приложение должно быть запущено на своем пути, вам нужно сначала изменить каталог на этот путь, выполнив:

  cd / path / to / executable ./application  

Чтобы облегчить это, вы также можете создать Launcher для запуска приложения (см., например, этот ответ и многие другие)

Вот как я это сделал это с Machinarium.

Не рекомендуется размещать собственные пользовательские файлы в / usr / bin . Этот каталог может быть перезаписан, если вы позже обновите свою систему и обычно не включаетесь в решения для резервного копирования. Вместо этого создайте новый каталог в своем домашнем каталоге: ~ / bin . Вам необходимо повторно зарегистрироваться для этого каталога.

3
ответ дан 10 August 2018 в 09:34
[D5] Да. PATH содержит список путей, в которых команды выполняются при их вводе. Если вы хотите выполнить команду не в пути, вам нужно указать относительный или абсолютный путь ( ./ file или bin / file ).

Такое поведение, вероятно, является ошибкой. Например, приложение, возможно, выполняет некоторые файлы в одной из своих директорий ( bin / ), но при условии, что это выполняется из корневого каталога машинистария (вызовы bin / file в текущем каталоге), поэтому, если вы запустите его из другого каталога, файл не будет найден.

Обходной путь заключается в создании скрипта в PATH, который входит в каталог machinarium и затем выполняет его.

  #! / bin / bash cd / path / to / machinarium ./machinarium-or-whatever  

просто назовите его machinarium и поместите его под каталог, который на вашем пути (/ usr / local / bin или один в вашем / доме). Вы можете запустить эту команду из любого каталога.

1
ответ дан 13 August 2018 в 15:43
  • 1
    Я бы предпочел бы, если вы удалите предложение, чтобы поместить скрипт в / usr / bin . – enzotib 22 June 2011 в 12:58
  • 2
    вы правы / usr / bin - это не место, чтобы его поместить. – santiagozky 24 June 2011 в 05:28

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

Для запуска приложения должен быть установлен исполняемый бит. Это можно также сделать из Nautilus в меню правой кнопки мыши ( Свойства -> Разрешения ).

Затем вы можете запустить любой исполняемый двоичный файл или скрипт, дважды щелкнув в Nautilus или запустите следующую команду в терминале (обратите внимание на команду запуска ./ ):

  ./ path / to / executable / application  

Если ваше приложение должно быть запущено на своем пути, вам нужно сначала изменить каталог на этот путь, выполнив:

  cd / path / to / executable ./application  

Чтобы облегчить это, вы также можете создать Launcher для запуска приложения (см., например, этот ответ и многие другие)

Вот как я это сделал это с Machinarium.

Не рекомендуется размещать собственные пользовательские файлы в / usr / bin . Этот каталог может быть перезаписан, если вы позже обновите свою систему и обычно не включаетесь в решения для резервного копирования. Вместо этого создайте новый каталог в своем домашнем каталоге: ~ / bin . Вам необходимо повторно зарегистрироваться для этого каталога.

3
ответ дан 13 August 2018 в 15:43
  • 1
    В окнах существует переменная среды % PATH% , каталоги разделяются символом ; . В Ubuntu эквивалент $ PATH , в котором каталоги разделены символом : . Чтобы добавить новый каталог к ​​текущему, который должен иметь приоритет над старыми каталогами, поместите следующую строку в ваш ~ / .profile : PATH = / полный / путь / в / ваш / bin -dir: $ PATH – Lekensteyn 22 June 2011 в 12:45

Другие вопросы по тегам:

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