Исполняемый файл расположился в месте, как выполнить его в месте B?

Можно использовать calc:

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

C-style arbitrary precision calculator (version 2.12.3.3)
Calc is open software. For license details type:  help copyright
[Type "exit" to exit, or "help" for help.]

; 2+4
6
; 3+5
8
; 3.4+5
8.4
; 2^4
16
; exit

Или Вы используете его с выражением как аргумент, и это предоставит ответ и затем выйдет

$calc 2 + 4
    6
$

calc подобно bc, Я точно так же, как путь это ведет себя как значение по умолчанию лучше

1
18.03.2013, 14:58
2 ответа

Если Ваш исполняемый файл получает, это - конфигурация от относительного пути, тот путь относительно pwd (существующий рабочий каталог). Так:

> cd /there/locA
> pwd
/there/locA
> /there/stuff/executable

Исполняемый файл посмотрит относительно locB. Теперь:

> cd /there/locB
> pwd
/there/locB
> /there/stuff/executable

Исполняемый файл посмотрит относительно locB.

Если Вы подразумеваете, что подразумеваете, что Вы хотите выполнить исполняемый файл, в то время как pwd является locB, но волшебно получите конфигурацию от locB, ответ - то, что единственный способ сделать, который был бы так или иначе, говорит исполняемому файлу, что, например, путем добавления параметра командной строки, с которым можно вызвать его, или с помощью пользовательской переменной среды. Просто копируя исполняемый файл в locA и затем пытаясь вызвать тот конкретно от locB ожидание это использовать locA в качестве pwd не будет работать - pwd все еще locB.

Я замечаю $PWD установки для единственной команды:

> PWD=/there/locA bash -c 'echo $PWD'
/there/locB

не работает. Таким образом, возможно, Вы не можете имитировать pwd.

1
27.01.2020, 23:54
  • 1
    хорошо, позвольте мне попробовать его :) –  Hu Man 18.03.2013, 15:51
  • 2
    , Вы могли объяснить, как вышеупомянутые командные строки могли выполнить выполнение exe от dirA внутри dirB (папка конфигурации)? –  Hu Man 18.03.2013, 16:50
  • 3
    То, что я говорю, где exe хранится в файловой системе (ли dirA, dirB, или где-то в другом месте) не имеет значения. Если Вы выполняете его в dirA, и это получает конфигурацию с помощью относительного пути, то это выполняется в dirA. Перемещение exe где-то в другом месте не будет иметь значения. Другими словами: Вы не МОЖЕТЕ заставить оболочку притворяться, что Вы находитесь в некотором другом каталоге. Ваш pwd Ваш pwd. Период. Если Вы хотите опцию указать другую конфигурацию, то необходимо создать ту опцию. Если Вы не записали exe, то проверьте, имеет ли он такую опцию (хорошее программное обеспечение обычно делает). –  goldilocks 18.03.2013, 17:00
  • 4
    , как это могло быть похожим на это? Поскольку я знаю, что возможно выполнить exe с другим пользователем, таким образом, Вы хотите сказать, что невозможно сделать так с другой папкой? –  Hu Man 18.03.2013, 17:16
  • 5
    , "Если Ваш исполняемый файл получает, это - конфигурация от относительного пути, тот путь относительно pwd (существующий рабочий каталог)". Я не думаю, что можно принять это в общем случае. Это, вероятно, будет корректно во многих случаях, но не обязательно все. –  a CVn 18.04.2013, 09:27

Я не уверен, что понимаю Ваш вопрос, таким образом, я вновь заявлю о том, что я понимаю в своих собственных словах. У Вас есть программа, которая ищет ее конфигурационные файлы в том же каталоге, в котором расположена программа. Например, если Вы работаете /home/human/ExecuteIt/FolderWithConfiaguration/Configuration1/executable, это ищет конфигурационные файлы в /home/human/ExecuteIt/FolderWithConfiaguration/Configuration1. Вы хотите смочь запустить программу с различными конфигурациями, например /home/human/ExecuteIt/FolderWithConfiaguration/Configuration2. И Вы не хотите делать несколько копий программы.

Можно сделать символьные ссылки на исполняемый файл в нескольких каталогах и сделать символьные ссылки на все общие файлы также. Например, предположите, что программа требует трех файлов: исполняемый файл executable, файл данных data, и конфигурационный файл config. У Вас есть две различных конфигурации, которые Вы вставляете /home/human/ExecuteIt/FolderWithConfiaguration/Configuration1/config и /home/human/ExecuteIt/FolderWithConfiaguration/Configuration2/config. У Вас есть одна копия исполняемого файла и файл данных, оба в /home/human/ExecuteIt/FolderWithConfiaguration/Configuration1/. И Вы делаете символьную ссылку на /home/human/ExecuteIt/FolderWithConfiaguration/Configuration1/executable в каталоге /home/human/ExecuteIt/FolderWithConfiaguration/Configuration2/, а также символьная ссылка на /home/human/ExecuteIt/FolderWithConfiaguration/Configuration1/data.

cd /home/human/ExecuteIt/FolderWithConfiaguration/Configuration2
ln -s ../Configuration1/executable ../Configuration1/data

Символьные ссылки говорят системе искать реальный файл в другом месте. Они не содержат данных сами, поэтому при обновлении исполняемого файла или данных в Configuration1, это относится ко всей конфигурации; и существует только одна копия файлов, таким образом, дополнительные конфигурации только требуют дискового пространства для конфигурационного файла.

Большинство программ, которые ведут себя этот путь, примет местоположение во внимание исполняемого файла при поиске данных и конфигурационных файлов. Если Ваш переходит по символьной ссылке, этот метод не будет работать. Вместо этого можно сделать жесткую ссылку. Жесткие ссылки являются разнообразными путями для тех же файлов; все жесткие ссылки на файл эквивалентны.

cd /home/human/ExecuteIt/FolderWithConfiaguration/Configuration2
ln ../Configuration1/executable ../Configuration1/data

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

0
27.01.2020, 23:54
  • 1
    я не уверен, что предпоследнее предложение имеет много смысла. Все жесткие ссылки указывают на те же данные (содержание файла), только под различными именами. Обновите один, и все, что другие сразу отражают изменение. Это - красота жестких ссылок: можно поместить то же содержание эквивалентно под несколькими именами файлов, не имея больше чем одной копии файла, пока они - все в той же файловой системе. –  a CVn 18.04.2013, 09:26

Теги

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