Intereting Posts
Как получить список всех активных X-сессий и их владельцев mint 17.2 не будет подключаться к самому сильному ssid, а вместо этого к определенному Чтение двух файлов в цикл IFS while – есть ли способ получить нулевой результат разбора в этом случае? Тестирование, если процесс выполняется через if и -z Как скачать pbins с paludis через торрент-протокол? Плитка / Greographic Map в Кибане не работает Вино не работает в Linux Mint 18 Sarah. Попытка запустить Game Maker Studio без везения rsync remove-source-files, как он возобновляется? .desktop файл выполнить сообщение об ошибке в чем преимущество -squeeze-repeat в команде tr Загрузочный загрузчик XEN Bootloader или Kernel не является исполняемым / не может найти ядро ​​при использовании XM create Есть ли какая-либо документация по загрузке сети Xen? Наведите фокус мыши на активное окно текущего экрана Как запустить Pidgin, когда я нажимаю ссылку irc: //? Забыли имя пользователя и пароль в Linux Mint

скрипт 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 $ 

Где ошибка?

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

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

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

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

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

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

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

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

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

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