Как петлять в другом каталоге

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

Например:

Мой pwd может быть /home/directoryA. Однако файл, который я хотел бы, выполняется, может быть в directoryD. В данный момент, если бы я хочу выполнить файл, я должен был бы перейти в cd /home/directoryA/directoryB/directoryC/directoryD/ и затем выполните файл. Или я мог бы иметь, делают что-то как src /directoryA/directoryB/directoryC/directoryD/somefile

  1. Действительно ли возможно выполнить файл, на самом деле не будучи в каталоге, где файл?

  2. Есть ли ярлык способ выполнить файл somefile не входя в каталог?

6
задан 17 May 2018 в 05:09

5 ответов

Создайте переменную окружения для этого somefile. (например), somefile = "~/directoryA/directoryB/directoryC/DirectoryD/somefile" и каждый раз, когда Вы хотите выполнить тот некоторый тип файла в cmd %somefile %. это будет работать.

-1
ответ дан 29 October 2019 в 07:55

Нет Вы не должны использовать:

cd home/directoryA/directoryB/directoryC/DirectoryD
./somefile 

Можно просто выполнить команду путем добавления префикса его ее путь:

/home/directoryA/directoryB/directoryC/DirectoryD/somefile

Поскольку Вы уже находитесь в /home/directoryA можно использовать ярлык текущего каталога . и выполненный команда как это:

./directoryB/directoryC/DirectoryD/somefile

Я заметил, что OP развернул объем с помощью комментариев в соответствии с другими ответами. Вот некоторая дополнительная информация:

  • Узнать где somefile расположен использование: locate somefile.
  • Если somefile был добавлен сегодня, необходимо сначала обновить определять местоположение базу данных путем выполнения sudo updatedb.
  • Когда существует несколько версий somefile расположенный в ПУТИ можно узнать, какой выполняется первое использование which somefile.
  • Если Вы хотите работать somefile не указывая имя каталога впереди помещает его в путь. Проверять использование пути echo $PATH. Общие местоположения пути для помещения somefile /usr/local/bin (если это использует sudo полномочия), и /home/your_user_name/bin (Вам, возможно, придется создать каталог сначала).
  • Можно также добавить /home/directoryA/directoryB/directoryC/DirectoryD/ к Вашему пути, но это было бы очень необычно. Однако Вы могли затем просто ввести somefile в каком каталоге Вы находитесь, и он будет работать.
  • Конечно, somefile должен быть исполняемый файл, который Вы устанавливаете с командой: chmod a+x /home/directoryA/directoryB/directoryC/DirectoryD/somefile
6
ответ дан 23 November 2019 в 07:42

Конечно! Если somefile отмечен как исполняемый файл, можно выполнить его с

~/directoryA/directoryB/directoryC/DirectoryD/somefile

Хотите знать, является ли somefile исполняемым файлом? Перейдите к его каталогу и работайте

find . -maxdepth 1 -perm -111 -type f

видеть все исполняемые файлы в том каталоге.

2
ответ дан 23 November 2019 в 07:42

Существует иначе (так или иначе не уже упомянут) при помощи профиля оболочки (.bashrc, .zshrc и т.д.).

Можно работать:

# Assuming it is a script you made, changing file permission to make it executable
chmod a+x ~/directoryA/directoryB/directoryC/directoryD/somefile

# Appending your shell profile with an alias to run the script from wherever you are
echo "alias somename=\"source ~/directoryA/directoryB/directoryC/directoryD/somefile\"" >> ~/.profile

# replace ~/.profile with config file of whichever shell you use
# Also replace source with python if the script is a python script or whichever interpreter it requires for execution
# Make sure you have #!/usr/bin/env python or #!/path/to/interpreter on your computer as the first line of your script

Хотя выше метода позволяет сценарию быть выполненным отовсюду, необходимо удостовериться, что сценарий не зависит от pwd (существующий рабочий каталог) для выполнения (если не предназначено).

Можно затем запустить скрипт как исполняемый файл в любом каталоге, как:

somename

P.S.: Что касается, почему бы не добавить каталог для СОЕДИНЕНИЯ КАНАЛОМ просто находился под предположением, что только единственный исполняемый файл должен был быть добавлен, и не каталог, полный исполняемых файлов как adb-platform-tools, в этом случае добавляющий путь к каталогу для СОЕДИНЕНИЯ КАНАЛОМ, будет метод для использования.

-2
ответ дан 23 November 2019 в 07:42

$PATH переменная оболочки содержит каталоги, где исполняемые файлы ищутся. Добавьте каталог, содержащий Ваш исполняемый файл в $PATH и это может быть выполнено отовсюду.

Включить .bashrc файл:

export PATH=$PATH:/../your_directory
1
ответ дан 23 November 2019 в 07:42

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

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