Я запускаю Ubuntu с использованием WSL (подсистема Windows для Linux). Я написал простой скрипт оболочки ниже. При запуске он выдает следующую ошибку.
#! /bin/sh
# "test script"
echo "hello world"
test.sh: команда не найдена
Но он успешно запускается, если я запускаю команду using sh test.sh
или bash test.sh
.
Так есть ли способ запустить его без sh
родного Linux?
решение1
Вы всегда можете запустить его как ./test.sh
.
./
разрешается в текущий каталог, заканчивающийся на /
, поэтому вы фактически указываете полный путь к своему скрипту.
Just test.sh
будет работать только если ваш текущий каталог находится в $PATH
. Это не эксклюзивно для WSL.
решение2
Основы:
Первый:
Вы создаете скрипт с «шебангом» в первой строке, это определяет, какой именно скрипт, например bash, python или perl, понимает остальную часть текстового файла.
Обычно это выглядит так: #!/bin/bash
или #!/bin/env python
что-то в этом роде
Второй:
Убедитесь, что файл имеет x
флаг - для выбора user
, group
и/или others
( man chmod
для более подробной информации) с помощью, например,
chmod 755 script_filename
Третий:
Поместите его в папку (каталог) на вашем жестком диске, на любом постоянно подключенном носителе информации.
Это mkdir -p $HOME/bin/
может быть хорошей идеей, для личных вещей.
Четвертое:
убедитесь, что папка указана в echo $PATH
- например, добавив строку, содержащую
export PATH=$PATH:/absolute/path/to/folder/
в$HOME/.bash_aliases
После всего этого ваш скрипт станет доступным (исполняемым) -в недавно запущенной оболочке (для вступления в силу пункта 4)- введя только имя в командной строке bash.
(Примечание: WSL, по крайней мере в первой версии, является/была Ubuntu от Canonical)
Более детально:https://tldp.org/guides.html- в руководствах Bash