У меня есть сценарий someutil.sh
, который я хотел бы вызвать в другом сценарии main.sh
.
Оба скрипта:
- В
~/bin
и являются исполняемыми (chmod +x someutil.sh
). - Во главе с
#!/bin/bash
- Функционал из командной строки
$PATH включает ~/bin
по умолчанию, а ~/.bashrc
включает псевдонимы:
alias someutil="someutil.sh"
alias main="main.sh"
Я пытался запустить someutil
внутри скрипта следующими способами
- аргументы someutil (идентично использованию в интерактивной командной строке)
- ./некоторые аргументы утилиты
- ~/bin/someutil.sh аргументы
Main.sh
выполняется, но выдает ошибку «команда не найдена» для someutil, если я пытаюсь использовать псевдоним.
someutil
также создает файл для временного использования (в домашнем каталоге), к которому затем пытается добавить некоторые данные (используя >>
, но это вызывает ошибку отказа в доступе). Однако части, где я использую sed -i ...
с файлом в качестве входного файла, работают нормально.
Я также пробовал следовать советам из этих ответов:
- https://stackoverflow.com/a/8352939/1669825
- Проблемы с вызовом сценария bash из другого сценария bash
Единственное, что работает, — это вызывать функцию с помощью ~/bin/someutil.sh
, но мне бы очень хотелось использовать псевдонимы (для удобочитаемости) и добавлять команды к пути, чтобы не всегда указывать полный путь. Я также не понимаю, почему скрипт, создающий файл, не может его потом отредактировать...
Итак, я явно что-то упускаю либо с переменной пути (разные переменные пути для разных пользователей или сред), либо каким-то образом не понимаю, с какими разрешениями запускаются сценарии при выполнении.
Я использую Debian Buster на виртуальной машине на Chromebook (среда разработки Linux (бета)).
Помощь приветствуется!