Напишите сценарии оболочки и функции оболочки, чтобы реализовать компиляцию ns3 по любому пути.

основы оболочки


оболочка, bash, ядро

Отношения между Bash, Shell и Kernel подобны отношениям между нашими глазами, обработкой световых сигналов и мозгом.

  1. Ядро: как следует из названия, ядро ​​Linux эквивалентно вашему мозгу.
  2. Оболочка: это аналог процессора световых сигналов для глаз, который может обрабатывать цветные объекты, видимые глазами, в сборку команд, которую может принять мозг.
  3. Баш: Эквивалент большого и красивого глаза. Есть много видов глаз (в т.ч. зш и т.п.), но такой нравится всем
  4. терминал: терминал, который эквивалентен форме существования ваших глаз, то есть терминалов может быть несколько.

Формальное объяснение:

  • Ядро: ядро
    , его основные модули (или компоненты) включают в себя следующие части: управление хранилищем, управление процессором и процессами, файловая система, управление устройствами и драйверами, сетевое взаимодействие и инициализация системы (загрузка), системные вызовы и т. д., чтобы завершить контроль над оборудованием.
  • Оболочка:
    обычно известная как оболочка (используется для отличия от ядра), это слой оболочки вне машины для взаимодействия человека с компьютером. Это интерфейс для взаимодействия между людьми и компьютерами. Программное обеспечение (анализатор команд), которое «обеспечивает пользовательский интерфейс», получает пользовательские команды, а затем вызывает соответствующее приложение. Его производительность заключается в том, что пользователь вводит команду, а оболочка немедленно интерпретирует и выполняет команду. Он не ограничивается такими понятиями, как системы и языки, методы работы и методы производительности. Например, мы обычно вводим команды в черной рамке, называемой интерфейсом командной строки (CLI); кликаем по экрану, называемом графическим интерфейсом пользователя (GUI).
  • Bash:
    его название представляет собой ряд сокращений: Bourne-Again SHell, как следует из названия, представляет собой регенерированную оболочку Таким образом, Bash является разновидностью оболочки и является наиболее распространенной оболочкой. По умолчанию в Mac используется оболочка bash.

Общий сценарий оболочки — xx.sh, а рекомендуемый способ выполнения —
начало файла ./xx.sh:

#!/bin/bash

Или для совместимости с разными средами

#!/bin/env bash

Поэтому файл sh — это просто пакет шелл-команд, используемых в терминале, который удобно вызывать

Использование $ в сценарии оболочки

ссылка на блог об использовании $

  • $0: сама команда оболочки. От 1 до 9: указывает количество параметров оболочки.
  • $*: отображать все параметры, переданные скрипту, в виде одной строки.
  • $?: показывает выполнение последней команды
  • $#: количество параметров, переданных скрипту
  • $$: Текущий идентификационный номер процесса запущенного скрипта.
  • $!: Идентификационный номер последнего процесса, запущенного в фоновом режиме.
  • $-: отображает текущие параметры, используемые оболочкой.

При ссылке на переменные используйте символ $ для прямой ссылки и включайте переменные цикла.

[root@localhost ~]# x=1024
[root@localhost ~]# echo $x
1024



переменная


локальная переменная

Пользовательская переменная, допустимая для текущего процесса, недопустимая для других процессов и дочерних процессов текущего процесса.

переменная среды

Текущий процесс действителен и может вызываться дочерними процессами

  • env: просмотр переменных окружения текущего пользователя.
  • set: запросить все переменные текущего пользователя (временные переменные и переменные среды)
export  变量名 = 变量值 
或者 
变量名  = 变量值 ; export  变量名

#系统中有一个PATH,环境变量

Временное дополнение:

~$ echo $PATH       # 显示当前环境变量
	/usr/local/sbin:/usr/local/bin     # 显示举例,多个路径中间用“:”隔开
~$ PATH="$PATH:/home/workdir"     # 添加“/home/workdir”目录
	/usr/local/sbin:/usr/local/bin:/home/workdir    # 显示举例,多个路径中间仍用“:”隔开
~$ export PATH
~$ source ~/.bashrc

Внесите постоянное изменение:

# 在相应文件中添加
PATH=$PATH:/home/workdir

глобальная переменная

Его могут использовать все пользователи и программы в мире, а также унаследованные и вновь созданные пользователи по умолчанию.

имя файла иллюстрировать Примечание
~/.bashrc Информация bash текущего пользователя, прочитанная, когда пользователь входит в систему Определите псевдонимы, umask, функции и т. д.
~/.bash_profile Переменные среды для текущего пользователя, читаемые при входе пользователя в систему
~/.bash_logout Когда текущий пользователь выходит из текущей оболочки, последнее чтение Определите программу выполнения при выходе пользователя и т. д.
/ect/bashrc Глобальная информация bash, действительная для всех пользователей
/etc/профиль Информация о глобальной переменной среды Система и все пользователи действуют



~/.bashrcДобавьте функцию оболочки в


()Неважно, здесь он или нет, и тогда =не оставляйте вокруг него пробелы, а отступ должен следовать за его автоматическим отступом, иначе будет сообщено об ошибке

function waff() {
    
    
	ns_root="/opt/ns-allinone-3.32/ns-3.32/"
	cd $ns_root && sudo ./waf $*
}

При выполнении:

waff --run hello-simulator

Таким образом, вам не нужно переходить в ns-3.32папку для запуска ./wafкоманды


Напишите сценарии оболочки и добавьте переменные среды


Это нужно для того, чтобы добавить путь к скрипту в переменную окружения, а затем скомпилировать файл, выполнив скрипт

~/.bashrc:

export PATH="/opt/ns-allinone-3.32/wafenv.sh:$PATH"

вафенв.ш:

#!/bin/bash

ns_root="/opt/ns-allinone-3.32/ns-3.32/"
cd $ns_root && sudo ./waf $*

осуществлять:

accelerator@LAB:/opt/ns-allinone-3.32$ wafenv.sh --run hello-simulator
Waf: Entering directory `/opt/ns-allinone-3.32/ns-3.32/build'
Waf: Leaving directory `/opt/ns-allinone-3.32/ns-3.32/build'
Build commands will be stored in build/compile_commands.json
'build' finished successfully (0.735s)
Hello Simulator

рекомендация

отblog.csdn.net/qq_20493631/article/details/111182647