скрипт bash не работает

Я написал этот скрипт псевдонима простого типа в своем каталоге bin в доме

#!/bin/sh
alias kp='ls –L'
alias ldir='ls –aF'
alias copy='cp'

и сохранил его под именем myenv. Затем я изменил режим с помощью

chmod +x /bin/myenv

, затем выполнил его с помощью команды

myenv

, но после этого, когда я использую kp, он говорит, что команда kp не найдена. Почему?

-2
задан 10 November 2017 в 19:19

2 ответа

Ваш скрипт по умолчанию работает в под-оболочке. (Он открывает новую оболочку и запускает ваш скрипт. После того, как скрипт завершит работу, его измененная среда будет уничтожена.)

Если вы хотите изменить текущие настройки среды оболочки, вам необходимо:

source myenv

или:

. myenv

См. man bash Команды / источник создания оболочки .

0
ответ дан 10 November 2017 в 19:19

Во-первых, потому что символ , который вы использовали в alias kp='ls –L' и alias ldir='ls –aF', не совпадает с - (вы можете видеть, что он немного длиннее). Попробуйте:

#!/bin/sh
alias kp='ls -L'
alias ldir='ls -aF'
alias copy='cp'

Просто скопируйте и вставьте сверху.

Во-вторых, если вы хотите, чтобы скрипт имел ожидаемый эффект, просто поместите эту строку в файл ~/.bashrc:

source /bin/myenv

В любом случае лучший способ создать псевдонимы в Ubuntu - это метод: https://askubuntu.com/a/5278/147044 .

0
ответ дан 10 November 2017 в 19:19

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

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