Скрипт добавления псевдонима в Linux

#linux #bash #ubuntu #script

Вопрос:

Я написал эту вещь, но она не работает. Я не знаю, почему. Скрипт не создает никаких псевдонимов. Вот мой сценарий:

 #!/bin/bash ans=t  while [ $ans == y ]; do  echo "Give alias name"  read name  echo "Give aliast instruction"  read instruction  echo "alias $name='$instruction'"   read ans done  

Это, вероятно, простой вопрос, я совершенно новичок в Linux.

Комментарии:

1. Не связывайте изображения. Поместите свои строки сценария в текст. Вы можете отформатировать сценарий строк с помощью редактора stackoverflow

2. я пока не могу добавлять фотографии другим способом

3. Не размещайте изображения или ссылки на изображения. Поставь свой сценарий.

4. о, хорошо, я постараюсь

5. вы никогда не попадаете в цикл while: $ans это не «y».

Ответ №1:

«==» не соответствует тесту. Это простое равенство: «=» Для проверки, отличается ли оно, это: !=

Для определения псевдонима необходимо использовать псевдоним команды.

И вы должны выполнить сценарий с помощью команды:

 . ./script   

Первая точка важна, если сценарий не будет выполняться вложенной оболочкой, и определение псевдонима будет для вложенной оболочки, а не для реальной оболочки.

 #!/bin/bash ans=t  while [ $ans != y ]; do  echo "Give alias name"  read name  echo "Give aliast instruction"  read instruction  alias "$name=$instruction"   read ans done  

Комментарии:

1. Мне жаль, что я отвечаю на этот вопрос в последнее время, но я действительно забыл. Но ты мне очень помогла. Сценарий обычно работал, единственная проблема заключалась в том, как я его излагал. Использование.. /скрипта решило проблему. Большое спасибо

Ответ №2:

В системах, производных от unix, нерегулярно, чтобы процесс (дочерний) изменял среду процесса, который его создал (родительский). Это резко контрастирует с windows, которая исторически не имела понятия о процессах. Windows, особенно ее командная среда, обязана своей моделью выполнения системе 1970-х годов под названием CP/M, из которой она была клонирована.

В Windows batch файл может изменять среду текущей оболочки; например, cd /temp может изменить текущий каталог оболочки. В системах, производных от unix, это неверно. Ребенок не может изменять среду родителя [ конечно, есть исключение, приведенное ниже ]; поэтому любые открытые, закрытые файлы, измененные каталоги, установленные/сброшенные переменные среды и т. Д… все это влияет только на ребенка.

Таким образом, хотя у вас может быть сценарий, содержащий « alias bye=выход из системы`, этот псевдоним будет существовать только в сценарии.

Исключением является концепция поиска источников. Оболочка unix обычно содержит команду source (сокращенно . , как в . myscript.sh ), которая вместо создания нового процесса для запуска myscript.sh в, просто включает в себя myscript.sh в текущей оболочке.

С помощью source вы можете добиться нужного вам эффекта, исправив свои ошибки, упомянутые в комментариях. В то же время вы должны быть в состоянии создать что-то вроде этого « псевдоним боб=»Мне нужно, мне нужно, мне нужно»

 and verify that it works.