скрипт bash не создает псевдоним и не обновляет $ PS1

Я думал, что напишу скрипт bash, чтобы установить псевдоним, который я часто использую, а также изменить команду promt.

Ниже мой сценарий.

#!/bin/bash # Make useful aliases alias c='clear' alias p='pwd' alias d='pwd' alias l='ls -l' alias clp='clear;pwd' # Prompt PS1='unix % ' # Echo to check if script runing echo 'Hello world' 

Но когда я запускаю этот скрипт (после предоставления разрешения на выполнение), псевдоним не добавляется. Также не обновляется подсказка со значением, заданным для PS1. Тем не менее он перекликается с Hello world так что он выглядит так, как будто скрипт запущен.

 user $ ./myEnv.sh Hello world user $ d d: command not found user $ 

Где ошибка?

3 Solutions collect form web for “скрипт bash не создает псевдоним и не обновляет $ PS1”

Легкий сценарий создал эти переменные в его собственной среде. Затем при выходе из этой конкретной среды уничтожается и вы возвращаетесь в среду родительской оболочки, где эти переменные не настроены так, как вы хотите.

Вместо того, чтобы выполнять его, вы должны указать его как . myEnv.sh . myEnv.sh

Сценарий создаст псевдоним в своем собственном экземпляре. Псевдоним не будет доступен в другом или родительском экземпляре bash. Также приглашение изменяется только в этом конкретном экземпляре bash.

Как говорили другие, вы должны указать сценарий, если хотите, чтобы такие вещи, как псевдонимы и измененные переменные среды, имели эффект.

Однако недостатком этого является то, что, хотя вы можете выполнить скрипт на своем пути, вы не можете создать сценарий таким образом; это означает, что каждый раз, когда вы хотите включить свои псевдонимы, вам нужно указать полный путь. Это может быть несколько раздражающим.

Чтобы этого избежать, вам нужно будет использовать ~/.bashrc . При запуске при запуске в интерактивном режиме оболочка bash автоматически отправит этот файл, поэтому, если вы определите свои псевдонимы в этом файле, они будут доступны во всех (вновь запущенных) оболочках с этой точки вперед.

Если вы не хотите, чтобы псевдонимы всегда были доступны, вы можете создать функцию в ~/.bashrc :

 addaliases() { alias c='clear' alias p='pwd' # ... and so on } 

Теперь, в следующий раз, когда вы запустите bash, вы можете запустить addaliases из командной строки, после чего будут добавлены псевдонимы.

Если вы не используете bash, но используете какую-то другую оболочку, то, очевидно, вы не должны помещать это в ~/.bashrc , а в другой файл; который точно зависит от точной оболочки, которую вы используете.

  • Как заменить пробелы в именах файлов с помощью подчеркивания
  • Команда для уничтожения определенного PID, предоставленного предыдущей командой
  • Добавить кавычки и запятую к каждому слову в файле
  • Выходной сигнал в ловушке, вызвавший вызванную ловушку?
  • Как я могу распространять свой ключ SSH pub в список серверов без необходимости вводить мой пароль снова и снова?
  • Предотвращение распространения SIGINT для родительского процесса
  • Ссылка на переменные массива bash из другого массива
  • Что происходит, когда скрипт встречает ошибку в одной из команд?
  • Пересылка электронной почты в виде вложения с помощью сценария оболочки bash или applescript
  • UNIX - команда разбивать файл на несколько файлов со всеми строками для каждых 3 уникальных значений в столбце
  • Как ssh в удаленном ящике, запустите команду и продолжайте ее работу после отключения
  • Interesting Posts

    Могу ли я указать, что пакет .deb зависит от Java, но не указывает, какую реализацию (например, OpenJDK, IcedTea, Oracle)?

    Использование дополнительных / менее общих ресурсов NFS для просмотра больших файлов

    Изменить каталог рабочего каталога в сценарии оболочки

    Разница между ulimit -n и / proc / $ PID / лимитами

    Передача переменных команде sed,

    Прочитайте каталог, чтобы увидеть файл для отображения inode

    Как разрешить пользователю OpenLDAP записывать данные в точку монтирования SSHFS?

    Невозможно установить фоновый рисунок в Gnome 3

    XFCE – узнать, какая команда выполняется с помощью данного пункта меню

    Невозможно просмотреть параметры загрузки или войти в GRUB через serial-over-lan

    Как преобразовать скрипт оболочки bash в Markdown?

    подключить диск usb через udisksctl, необходимо получить привилегии root

    Недавно установленный Pipelight для монетного двора 16 – Две версии Flash-выпуска

    подключение Linux-устройства к планшету через usb

    Grep -H не всегда возвращает путь к файлу, когда два совпадения находятся в одной строке

    Linux и Unix - лучшая ОС в мире.