Существует файл, который я хотел бы, выполняются в другой папке, приблизительно под четырьмя подкаталогами.
Например:
Мой pwd
может быть /home/directoryA
. Однако файл, который я хотел бы, выполняется, может быть в directoryD
. В данный момент, если бы я хочу выполнить файл, я должен был бы перейти в cd /home/directoryA/directoryB/directoryC/directoryD/
и затем выполните файл. Или я мог бы иметь, делают что-то как src /directoryA/directoryB/directoryC/directoryD/somefile
Действительно ли возможно выполнить файл, на самом деле не будучи в каталоге, где файл?
Есть ли ярлык способ выполнить файл somefile
не входя в каталог?
Создайте переменную окружения для этого somefile. (например), somefile = "~/directoryA/directoryB/directoryC/DirectoryD/somefile" и каждый раз, когда Вы хотите выполнить тот некоторый тип файла в cmd %somefile %. это будет работать.
Нет Вы не должны использовать:
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
Конечно! Если somefile отмечен как исполняемый файл, можно выполнить его с
~/directoryA/directoryB/directoryC/DirectoryD/somefile
Хотите знать, является ли somefile исполняемым файлом? Перейдите к его каталогу и работайте
find . -maxdepth 1 -perm -111 -type f
видеть все исполняемые файлы в том каталоге.
Существует иначе (так или иначе не уже упомянут) при помощи профиля оболочки (.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, в этом случае добавляющий путь к каталогу для СОЕДИНЕНИЯ КАНАЛОМ, будет метод для использования.
$PATH
переменная оболочки содержит каталоги, где исполняемые файлы ищутся. Добавьте каталог, содержащий Ваш исполняемый файл в $PATH
и это может быть выполнено отовсюду.
Включить .bashrc
файл:
export PATH=$PATH:/../your_directory